From 4ef86d8a1f494caa1e136ff78f9ea258d01164b1 Mon Sep 17 00:00:00 2001 From: wupengfei <834520024@qq.com> Date: 星期四, 16 十月 2025 09:28:44 +0800 Subject: [PATCH] Merge branch 'master' into dev-1.1.2 --- packages/utils/LoggerRecord/index.ts | 74 +++++++++++++++++++++++++++++++++++++ 1 files changed, 74 insertions(+), 0 deletions(-) diff --git a/packages/utils/LoggerRecord/index.ts b/packages/utils/LoggerRecord/index.ts new file mode 100644 index 0000000..b3552b9 --- /dev/null +++ b/packages/utils/LoggerRecord/index.ts @@ -0,0 +1,74 @@ +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 }); + } +} + +export const httpLoggerRecord = new HttpLoggerRecord({ + 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 ?? ''; + }, +}); -- Gitblit v1.9.1