import * as logRecordsServices from '@/services/api/logRecords';
|
import config from '@config/config';
|
import { LoggerRecord, LogOptions, LoggerRecordOptions, LoggerRecordLevel } from 'senior-request';
|
|
type HttpLogOptions = {
|
httpParams?: Omit<API.SaveFrontConsoleLogCommand, 'level' | 'content'>;
|
} & LogOptions;
|
|
class HttpLoggerRecord extends LoggerRecord<HttpLogOptions> {
|
constructor(options: LoggerRecordOptions = {}) {
|
super(options);
|
}
|
|
convertLogLevel(level: LoggerRecordLevel): EnumLogLevel {
|
switch (level) {
|
case 'debug':
|
return EnumLogLevel.Debug;
|
case 'info':
|
return EnumLogLevel.Information;
|
case 'warn':
|
return EnumLogLevel.Warning;
|
case 'error':
|
return EnumLogLevel.Error;
|
case 'log':
|
return EnumLogLevel.Trace;
|
default:
|
return EnumLogLevel.Debug;
|
}
|
}
|
|
log(level: LoggerRecordLevel, options: HttpLogOptions): void {
|
const httpUrl = options?.httpParams?.url ?? '';
|
if (httpUrl.toLowerCase().includes('saveFrontConsoleLog'.toLowerCase())) return;
|
const args = [...(options.args || []), options.httpParams].filter(Boolean);
|
super.log(level, {
|
...options,
|
args: args,
|
});
|
let params: API.SaveFrontConsoleLogCommand = {
|
/** 跟踪Id */
|
traceId: options.httpParams?.traceId,
|
level: this.convertLogLevel(level),
|
/** 内容 */
|
content: `[${this.config.moduleName}] ${options.message}`,
|
/** 堆栈跟踪 */
|
stackTrace: options.httpParams?.stackTrace,
|
/** 链接地址 */
|
url: options.httpParams?.url,
|
ext: JSON.stringify(args),
|
};
|
logRecordsServices.saveFrontConsoleLog(params, { showLoading: false, skipErrorHandler: true });
|
}
|
}
|
|
export const httpLoggerRecord = new HttpLoggerRecord({
|
moduleName: config.title,
|
enableStorage: true,
|
});
|