| import * as logRecordsServices from '@12333/services/apiV2/logRecords'; | 
| import { LoggerRecord, LogOptions, LoggerRecordOptions, LoggerRecordLevel } from 'senior-request'; | 
| import Taro from '@tarojs/taro'; | 
| import { EnumLogLevel } from '@12333/constants'; | 
| import { storageLocal } from '../storage'; | 
| import { getUtilsConfig } from '../config'; | 
|   | 
| 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 }); | 
|   } | 
| } | 
|   | 
| const Options: LoggerRecordOptions = { | 
|   moduleName: getUtilsConfig().appName, | 
|   enableStorage: true, | 
|   loggerStorageAdapter() { | 
|     return { | 
|       setItem(key: string, data: any) { | 
|         return Promise.resolve(storageLocal.setItem(key, data)); | 
|       }, | 
|       getItem(key: string) { | 
|         return Promise.resolve(storageLocal.getItem(key)); | 
|       }, | 
|     }; | 
|   }, | 
|   getPageUrl() { | 
|     return Taro.getCurrentInstance()?.router?.path ?? ''; | 
|   }, | 
| }; | 
|   | 
| export const defaultLoggerRecord = new LoggerRecord(Options); | 
|   | 
| export const httpLoggerRecord = new HttpLoggerRecord(Options); |