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