LogUtil.ts 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. /**
  2. * 日志打印工具类
  3. * @description
  4. * @author 冯聪
  5. */
  6. export default class LogUtil {
  7. /**
  8. * 是否显示Log
  9. * @description
  10. */
  11. public ifShowLog: boolean = true;
  12. /**
  13. * 标签符号
  14. * @description 标签与打印内容之间的拼接符号
  15. */
  16. private _tagChar: string = "...";
  17. /**
  18. * 标签符号
  19. * @description 标签与打印内容之间的拼接符号
  20. */
  21. private _frontChar: string = " ";
  22. /**
  23. * 对象key&value间隔符号
  24. * @description 打印对象时,key与value之间的拼接符号
  25. */
  26. private _keyValueChar: string = " = ";
  27. /**
  28. * 打印普通日志
  29. * @description
  30. * @param tag 日志标签(用于标识日志)
  31. * @param data 日志内容
  32. */
  33. public log(tag: string, ...data: any[]) {
  34. if (!this.ifShowLog) {
  35. return;
  36. }
  37. let totalTag = tag + this._tagChar;
  38. console.log("%c " + totalTag, "color: " + LogTagColor.skyblue, ...data);
  39. }
  40. /**
  41. * 打印警告日志
  42. * @description
  43. * @param tag 日志标签(用于标识日志)
  44. * @param data 日志内容
  45. */
  46. public warn(tag: string, ...data: any[]) {
  47. if (!this.ifShowLog) {
  48. return;
  49. }
  50. let totalTag = tag + this._tagChar;
  51. console.warn("%c " + totalTag, "color: " + LogTagColor.orange, ...data);
  52. }
  53. /**
  54. * 打印错误日志
  55. * @description
  56. * @param tag 日志标签(用于标识日志)
  57. * @param data 日志内容
  58. */
  59. public error(tag: string, ...data: any[]) {
  60. if (!this.ifShowLog) {
  61. return;
  62. }
  63. let totalTag = tag + this._tagChar;
  64. console.warn("%c " + totalTag, "color: " + LogTagColor.red,...data);
  65. }
  66. /**
  67. * 打印单个对象日志
  68. * @description 逐个分层打印所有对象的key,value值
  69. * @param tag 日志标签(用于标识日志)
  70. * @param obj 日志对象
  71. * @param frontStrNum 前缀字符数量(不用填)
  72. * @returns
  73. */
  74. public logSingle(tag: string, obj: any, frontStrNum: number = 0) {
  75. if (!this.ifShowLog) {
  76. return;
  77. }
  78. if (obj == null || obj == undefined) {
  79. return
  80. }
  81. if (typeof obj === "number" || typeof obj === "string" || typeof obj === "boolean") {
  82. this.log(`${this.getFrontStr(frontStrNum)}${tag}`, obj);
  83. } else {
  84. let objKeys = Object.keys(obj);
  85. for (const key of objKeys) {
  86. if (obj.hasOwnProperty(key)) {
  87. let index = objKeys.indexOf(key);
  88. if (typeof obj[key] === "object") {
  89. this.log(`${this.getFrontStr(frontStrNum)}`, key, ": ")
  90. this.logSingle(tag, obj[key], frontStrNum + 1)
  91. } else {
  92. if (!frontStrNum && index === 0) {
  93. this.log(`${this.getFrontStr(frontStrNum)}${tag}\n`, key, this._keyValueChar, obj[key]);
  94. }
  95. else {
  96. this.log(`${this.getFrontStr(frontStrNum)}`, key, this._keyValueChar, obj[key]);
  97. }
  98. }
  99. }
  100. }
  101. }
  102. }
  103. /**
  104. * 把日志内容拼接成字符串
  105. * @param data
  106. * @returns
  107. */
  108. public getMessage(...data: any[]) {
  109. let message = "";
  110. for (var i = 0; i < data.length; i++) {
  111. let str = data[i];
  112. let str_new = "";
  113. //屏蔽逗号
  114. for (var j = 0; j < str.length; j++) {
  115. let char: string = str[j];
  116. str_new += char;
  117. }
  118. message += str_new;
  119. }
  120. return message;
  121. }
  122. /**
  123. * 获取前缀字符串
  124. * @description 根据前缀字符串数目生成前缀字符串,用以标记层级
  125. * @param frontStrNum 字符串数量
  126. * @returns 返回前缀字符串(string)
  127. */
  128. public getFrontStr(frontStrNum: number): string {
  129. let str = "";
  130. if (frontStrNum > 0) {
  131. for (let i = 0; i < frontStrNum; i++) {
  132. str += this._frontChar;
  133. }
  134. return str;
  135. }
  136. return str;
  137. }
  138. }
  139. /** 日志字体颜色 */
  140. export enum LogTagColor {
  141. red = "red;font-weight:bold",
  142. white = "white;font-weight:bold",
  143. yellow = "yellow;font-weight:bold",
  144. green = "green;font-weight:bold",
  145. bule = "blue;font-weight:bold",
  146. skyblue = "#3DB2EF;font-weight:bold",
  147. orange = "orange;font-weight:bold",
  148. black = "black;font-weight:bold"
  149. }