zhangbo1_wd

日志分段打印处理

@@ -22,6 +22,11 @@ export class Logger { @@ -22,6 +22,11 @@ export class Logger {
22 private static domain: number = 0xFF00; 22 private static domain: number = 0xFF00;
23 private static prefix: string = 'SightApp'; 23 private static prefix: string = 'SightApp';
24 private static format: string = `%{public}s, %{public}s`; 24 private static format: string = `%{public}s, %{public}s`;
  25 + private static format_ext: string = `%{public}s`;
  26 + /**
  27 + * 暂时没找到限制大小相关文档,尝试4000是不行的,3500可以。可以后续优化
  28 + */
  29 + private static CHUNK_SIZE: number = 3500;
25 static isDebug: boolean = true; 30 static isDebug: boolean = true;
26 31
27 /** 32 /**
@@ -36,46 +41,113 @@ export class Logger { @@ -36,46 +41,113 @@ export class Logger {
36 } 41 }
37 42
38 static debug(...args: string[]) { 43 static debug(...args: string[]) {
39 - if(!Logger.isDebug){ 44 + if (!Logger.isDebug) {
40 return 45 return
41 } 46 }
42 - hilog.debug(Logger.domain, Logger.prefix, Logger.format, args); 47 + Logger.logContent(LogLevel.DEBUG, ...args)
43 } 48 }
44 49
45 static info(...args: string[]) { 50 static info(...args: string[]) {
46 - if(!Logger.isDebug){ 51 + if (!Logger.isDebug) {
47 return 52 return
48 } 53 }
49 - hilog.info(Logger.domain, Logger.prefix, Logger.format, args); 54 + Logger.logContent(LogLevel.INFO, ...args)
50 } 55 }
51 56
52 static warn(...args: string[]) { 57 static warn(...args: string[]) {
53 - if(!Logger.isDebug){ 58 + if (!Logger.isDebug) {
54 return 59 return
55 } 60 }
56 - hilog.warn(Logger.domain, Logger.prefix, Logger.format, args); 61 + Logger.logContent(LogLevel.WARN, ...args)
57 } 62 }
58 63
59 static error(...args: string[]) { 64 static error(...args: string[]) {
60 - if(!Logger.isDebug){ 65 + if (!Logger.isDebug) {
61 return 66 return
62 } 67 }
63 - hilog.error(Logger.domain, Logger.prefix, Logger.format, args); 68 + Logger.logContent(LogLevel.ERROR, ...args)
64 } 69 }
65 70
66 static fatal(...args: string[]) { 71 static fatal(...args: string[]) {
67 - if(!Logger.isDebug){ 72 + if (!Logger.isDebug) {
68 return 73 return
69 } 74 }
70 - hilog.fatal(Logger.domain, Logger.prefix, Logger.format, args); 75 + Logger.logContent(LogLevel.FATAL, ...args)
71 } 76 }
72 77
73 static isLoggable(level: LogLevel) { 78 static isLoggable(level: LogLevel) {
74 - if(!Logger.isDebug){ 79 + if (!Logger.isDebug) {
75 return 80 return
76 } 81 }
  82 + // 判断是否打印 TODO
77 hilog.isLoggable(Logger.domain, Logger.prefix, level); 83 hilog.isLoggable(Logger.domain, Logger.prefix, level);
78 } 84 }
  85 +
  86 + static logContent(level: LogLevel, ...args: string[]) {
  87 + let msg = Logger.getMsg(...args)
  88 + let length = msg.length
  89 + if (length < Logger.CHUNK_SIZE) {
  90 + // 不超限,保持原来的打印
  91 + Logger.print(level, ...args)
  92 + } else {
  93 + // 超限,分段打印
  94 + for (let i = 0; i < length; i += Logger.CHUNK_SIZE) {
  95 + let count = Math.min(length - i, Logger.CHUNK_SIZE);
  96 + Logger.printExt(level, msg.substring(i, i + count));
  97 + }
  98 + }
  99 + }
  100 +
  101 + static print(level: LogLevel, ...msg: string[]) {
  102 + switch (level) {
  103 + case LogLevel.DEBUG:
  104 + hilog.debug(Logger.domain, Logger.prefix, Logger.format, msg);
  105 + break
  106 + case LogLevel.INFO:
  107 + hilog.info(Logger.domain, Logger.prefix, Logger.format, msg);
  108 + break
  109 + case LogLevel.WARN:
  110 + hilog.warn(Logger.domain, Logger.prefix, Logger.format, msg);
  111 + break
  112 + case LogLevel.ERROR:
  113 + hilog.error(Logger.domain, Logger.prefix, Logger.format, msg);
  114 + break
  115 + case LogLevel.FATAL:
  116 + hilog.fatal(Logger.domain, Logger.prefix, Logger.format, msg);
  117 + break
  118 + }
  119 + }
  120 +
  121 + static printExt(level: LogLevel, msg: string) {
  122 + switch (level) {
  123 + case LogLevel.DEBUG:
  124 + hilog.debug(Logger.domain, Logger.prefix, Logger.format_ext, msg);
  125 + break
  126 + case LogLevel.INFO:
  127 + hilog.info(Logger.domain, Logger.prefix, Logger.format_ext, msg);
  128 + break
  129 + case LogLevel.WARN:
  130 + hilog.warn(Logger.domain, Logger.prefix, Logger.format_ext, msg);
  131 + break
  132 + case LogLevel.ERROR:
  133 + hilog.error(Logger.domain, Logger.prefix, Logger.format_ext, msg);
  134 + break
  135 + case LogLevel.FATAL:
  136 + hilog.fatal(Logger.domain, Logger.prefix, Logger.format_ext, msg);
  137 + break
  138 + }
  139 + }
  140 +
  141 + static getMsg(...args: string[]): string {
  142 + if (args == null || args.length <= 0) {
  143 + return '';
  144 + }
  145 + let msg = ''
  146 + args.forEach((v) => {
  147 + msg = msg.concat(', ').concat(v)
  148 + })
  149 + return msg.substring(2, msg.length);
  150 + }
79 } 151 }
80 152
81 export default new Logger('SightApp', 0xFF00) 153 export default new Logger('SightApp', 0xFF00)
@@ -38,6 +38,7 @@ instance.interceptors.request.use( @@ -38,6 +38,7 @@ instance.interceptors.request.use(
38 } 38 }
39 // 公共请求参数 39 // 公共请求参数
40 // config.params.key = key 40 // config.params.key = key
  41 + Logger.debug('HttpRequest', 'request: ' + config.url)
41 return config; 42 return config;
42 }, 43 },
43 (error: AxiosError) => { 44 (error: AxiosError) => {
@@ -85,9 +86,9 @@ instance.interceptors.response.use(// 响应拦截器response类型就是Axios.r @@ -85,9 +86,9 @@ instance.interceptors.response.use(// 响应拦截器response类型就是Axios.r
85 // return Promise.reject(new Error(message)) 86 // return Promise.reject(new Error(message))
86 // } 87 // }
87 // const data: ResponseBean<any> = response.data 88 // const data: ResponseBean<any> = response.data
88 - Logger.debug('HttpRequest', 'response ======start======= ') 89 + Logger.debug('HttpRequest', 'response ==============start=================')
89 Logger.debug('HttpRequest', 'response: ' + JSON.stringify(response.data)) 90 Logger.debug('HttpRequest', 'response: ' + JSON.stringify(response.data))
90 - Logger.debug('HttpRequest', 'response ======end======= ') 91 + Logger.debug('HttpRequest', 'response ==============end=================')
91 // 改造返回的数据,即将AxiosResponse的data返回,服务端返回的数据 92 // 改造返回的数据,即将AxiosResponse的data返回,服务端返回的数据
92 return response.data; 93 return response.data;
93 } else { 94 } else {
@@ -102,7 +103,7 @@ instance.interceptors.response.use(// 响应拦截器response类型就是Axios.r @@ -102,7 +103,7 @@ instance.interceptors.response.use(// 响应拦截器response类型就是Axios.r
102 // console.log(error.request) 103 // console.log(error.request)
103 // console.log(error.response) 104 // console.log(error.response)
104 // 这里用来处理http常见错误,进行全局提示 105 // 这里用来处理http常见错误,进行全局提示
105 - if(error!=null && error.response!=null ){ 106 + if (error != null && error.response != null) {
106 let message = buildErrorMsg(error.response.status); 107 let message = buildErrorMsg(error.response.status);
107 // 错误消息可以使用全局弹框展示出来 108 // 错误消息可以使用全局弹框展示出来
108 console.log(`httpStatus:${error.response?.status}-${message},请检查网络或联系管理员!`) 109 console.log(`httpStatus:${error.response?.status}-${message},请检查网络或联系管理员!`)