LogUtil.ts 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  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(totalTag, ...data);
  39. }
  40. /**
  41. * 打印普通日志
  42. * @description
  43. * @param tag 日志标签(用于标识日志)
  44. * @param data 日志内容
  45. */
  46. public logWithColor(tag: string, ...data: any[]) {
  47. if (!this.ifShowLog) {
  48. return;
  49. }
  50. let totalTag = tag + this._tagChar;
  51. console.log("%c " + totalTag, "color: " + LogTagColor.skyblue, ...data);
  52. }
  53. /**
  54. * 打印警告日志
  55. * @description
  56. * @param tag 日志标签(用于标识日志)
  57. * @param data 日志内容
  58. */
  59. public warn(tag: string, ...data: any[]) {
  60. if (!this.ifShowLog) {
  61. return;
  62. }
  63. let totalTag = tag + this._tagChar;
  64. console.warn("%c " + totalTag, "color: " + LogTagColor.orange, ...data);
  65. }
  66. /**
  67. * 打印错误日志
  68. * @description
  69. * @param tag 日志标签(用于标识日志)
  70. * @param data 日志内容
  71. */
  72. public error(tag: string, ...data: any[]) {
  73. if (!this.ifShowLog) {
  74. return;
  75. }
  76. let totalTag = tag + this._tagChar;
  77. console.warn("%c " + totalTag, "color: " + LogTagColor.red, ...data);
  78. }
  79. /**
  80. * 打印单个对象日志
  81. * @description 逐个分层打印所有对象的key,value值
  82. * @param tag 日志标签(用于标识日志)
  83. * @param obj 日志对象
  84. * @param frontStrNum 前缀字符数量(不用填)
  85. * @returns
  86. */
  87. public logSingle(tag: string, obj: any, frontStrNum: number = 0) {
  88. if (!this.ifShowLog) {
  89. return;
  90. }
  91. if (obj == null || obj == undefined) {
  92. return
  93. }
  94. if (typeof obj === "number" || typeof obj === "string" || typeof obj === "boolean") {
  95. this.log(`${this.getFrontStr(frontStrNum)}${tag}`, obj);
  96. } else {
  97. let objKeys = Object.keys(obj);
  98. for (const key of objKeys) {
  99. if (obj.hasOwnProperty(key)) {
  100. let index = objKeys.indexOf(key);
  101. if (typeof obj[key] === "object") {
  102. this.log(`${this.getFrontStr(frontStrNum)}`, key, ": ")
  103. this.logSingle(tag, obj[key], frontStrNum + 1)
  104. } else {
  105. if (!frontStrNum && index === 0) {
  106. this.log(`${this.getFrontStr(frontStrNum)}${tag}\n`, key, this._keyValueChar, obj[key]);
  107. }
  108. else {
  109. this.log(`${this.getFrontStr(frontStrNum)}`, key, this._keyValueChar, obj[key]);
  110. }
  111. }
  112. }
  113. }
  114. }
  115. }
  116. /**
  117. * 把日志内容拼接成字符串
  118. * @param data
  119. * @returns
  120. */
  121. public getMessage(...data: any[]) {
  122. let message = "";
  123. for (var i = 0; i < data.length; i++) {
  124. let str = data[i];
  125. let str_new = "";
  126. //屏蔽逗号
  127. for (var j = 0; j < str.length; j++) {
  128. let char: string = str[j];
  129. str_new += char;
  130. }
  131. message += str_new;
  132. }
  133. return message;
  134. }
  135. /**
  136. * 获取前缀字符串
  137. * @description 根据前缀字符串数目生成前缀字符串,用以标记层级
  138. * @param frontStrNum 字符串数量
  139. * @returns 返回前缀字符串(string)
  140. */
  141. public getFrontStr(frontStrNum: number): string {
  142. let str = "";
  143. if (frontStrNum > 0) {
  144. for (let i = 0; i < frontStrNum; i++) {
  145. str += this._frontChar;
  146. }
  147. return str;
  148. }
  149. return str;
  150. }
  151. }
  152. /** 日志字体颜色 */
  153. export enum LogTagColor {
  154. red = "red;font-weight:bold",
  155. white = "white;font-weight:bold",
  156. yellow = "yellow;font-weight:bold",
  157. green = "green;font-weight:bold",
  158. bule = "blue;font-weight:bold",
  159. skyblue = "#3DB2EF;font-weight:bold",
  160. orange = "orange;font-weight:bold",
  161. black = "black;font-weight:bold"
  162. }