Log.ts 2.5 KB

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