LogUtil.ts 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. /**
  2. * 日志打印工具类
  3. * @description
  4. * @author 冯聪
  5. */
  6. export default class LogUtil {
  7. /**
  8. * 是否显示Log
  9. * @description
  10. */
  11. public ifShowLog: boolean = false;
  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 (cc.sys.os != cc.sys.OS_ANDROID) {
  89. this.log(tag, obj);
  90. return;
  91. }
  92. if (!this.ifShowLog) {
  93. return;
  94. }
  95. if (obj == null || obj == undefined) {
  96. return
  97. }
  98. if (typeof obj === "number" || typeof obj === "string" || typeof obj === "boolean") {
  99. this.log(`${tag}=> ${this.getFrontStr(frontStrNum)}${tag}`, obj);
  100. } else {
  101. let objKeys = Object.keys(obj);
  102. for (const key of objKeys) {
  103. if (obj.hasOwnProperty(key)) {
  104. let index = objKeys.indexOf(key);
  105. if (typeof obj[key] === "object") {
  106. this.log(`${tag}=> ${this.getFrontStr(frontStrNum)}`, key, this._keyValueChar)
  107. this.logSingle(tag, obj[key], frontStrNum + 1)
  108. } else {
  109. if (!frontStrNum && index === 0) {
  110. this.log(`${tag}=> ${this.getFrontStr(frontStrNum)}`, key, this._keyValueChar, obj[key]);
  111. }
  112. else {
  113. this.log(`${tag}=> ${this.getFrontStr(frontStrNum)}`, key, this._keyValueChar, obj[key]);
  114. }
  115. }
  116. }
  117. }
  118. }
  119. }
  120. /**
  121. * 把日志内容拼接成字符串
  122. * @param data
  123. * @returns
  124. */
  125. public getMessage(...data: any[]) {
  126. let message = "";
  127. for (var i = 0; i < data.length; i++) {
  128. let str = data[i];
  129. let str_new = "";
  130. //屏蔽逗号
  131. for (var j = 0; j < str.length; j++) {
  132. let char: string = str[j];
  133. str_new += char;
  134. }
  135. message += str_new;
  136. }
  137. return message;
  138. }
  139. /**
  140. * 获取前缀字符串
  141. * @description 根据前缀字符串数目生成前缀字符串,用以标记层级
  142. * @param frontStrNum 字符串数量
  143. * @returns 返回前缀字符串(string)
  144. */
  145. public getFrontStr(frontStrNum: number): string {
  146. let str = "";
  147. if (frontStrNum > 0) {
  148. for (let i = 0; i < frontStrNum; i++) {
  149. str += this._frontChar;
  150. }
  151. return str;
  152. }
  153. return str;
  154. }
  155. }
  156. /** 日志字体颜色 */
  157. export enum LogTagColor {
  158. red = "red;font-weight:bold",
  159. white = "white;font-weight:bold",
  160. yellow = "yellow;font-weight:bold",
  161. green = "green;font-weight:bold",
  162. bule = "blue;font-weight:bold",
  163. skyblue = "#3DB2EF;font-weight:bold",
  164. orange = "orange;font-weight:bold",
  165. black = "black;font-weight:bold"
  166. }