Log.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. // 个人开关,只对log方法有效
  2. export const LOG_TAG = {
  3. SOCKET: { desc: 'LOG_SOCKET', isOpen: true },
  4. TEST: { desc: 'LOG_TEST', isOpen: false },
  5. }
  6. export class Log {
  7. public static log(tag, ...args) {
  8. var backLog = console.log || cc.log
  9. if (!tag || !tag.isOpen) {
  10. return;
  11. }
  12. let arr: Array<any> = Array.prototype.slice.call(arguments);
  13. arr.splice(0, 1, `[${tag.desc}]`);
  14. let info = Log.stack(2) + Log.getDateString() + " ";
  15. arr.splice(1, 0, info);
  16. backLog.apply(backLog, arr);
  17. }
  18. public static warn(...args) {
  19. var backLog = console.warn || cc.warn
  20. let arr: Array<any> = Array.prototype.slice.call(arguments);
  21. let info = Log.stack(2) + Log.getDateString() + " ";
  22. arr.splice(0, 0, info);
  23. backLog.apply(backLog, arr);
  24. }
  25. public static error(...args) {
  26. var backLog = console.error || cc.error
  27. let arr: Array<any> = Array.prototype.slice.call(arguments);
  28. let info = Log.stack(2) + Log.getDateString() + " ";
  29. arr.splice(0, 0, info);
  30. backLog.apply(backLog, arr);
  31. }
  32. private static getDateString(): string {
  33. let d = new Date();
  34. let str = d.getHours().toString();
  35. let timeStr = "";
  36. timeStr += (str.length == 1 ? "0" + str : str) + ":";
  37. str = d.getMinutes().toString();
  38. timeStr += (str.length == 1 ? "0" + str : str) + ":";
  39. str = d.getSeconds().toString();
  40. timeStr += (str.length == 1 ? "0" + str : str) + ":";
  41. str = d.getMilliseconds().toString();
  42. if (str.length == 1) str = "00" + str;
  43. if (str.length == 2) str = "0" + str;
  44. timeStr += str;
  45. timeStr = "[" + timeStr + "]";
  46. return timeStr;
  47. }
  48. private static stack(index = 2): string {
  49. var e = new Error();
  50. var lines = e.stack.split("\n");
  51. lines.shift();
  52. var result = [];
  53. lines.forEach(function (line) {
  54. line = line.substring(7);
  55. var lineBreak = line.split(" ");
  56. if (lineBreak.length < 2) {
  57. result.push(lineBreak[0]);
  58. } else {
  59. result.push({ [lineBreak[0]]: lineBreak[1] });
  60. }
  61. });
  62. var list = [];
  63. if (index < result.length - 1) {
  64. for (var a in result[index]) {
  65. list.push(a);
  66. }
  67. }
  68. var splitList = list[0].split(".");
  69. return (splitList[0] + ".js->" + splitList[1] + ":");
  70. }
  71. }