From 70354297755782af349c1c4f8741c82882414879 Mon Sep 17 00:00:00 2001
From: npmrun <1549469775@qq.com>
Date: Fri, 28 Mar 2025 00:18:11 +0800
Subject: [PATCH] =?UTF-8?q?feat(logger):=20=E6=B7=BB=E5=8A=A0=E5=9B=BA?=
 =?UTF-8?q?=E5=AE=9A=E5=91=BD=E5=90=8D=E7=A9=BA=E9=97=B4=E7=9A=84=E6=97=A5?=
 =?UTF-8?q?=E5=BF=97=E8=AE=B0=E5=BD=95=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

为 Logger 类添加 createNamespace 方法,用于创建带有固定命名空间的日志记录器。该功能简化了在多个地方使用相同命名空间的日志记录操作,提高了代码的可读性和维护性。
---
 packages/logger/main.ts    | 18 ++++++++++++++++++
 packages/logger/preload.ts | 28 ++++++++++++++++++++++++++++
 2 files changed, 46 insertions(+)

diff --git a/packages/logger/main.ts b/packages/logger/main.ts
index 4f0202c..3851385 100644
--- a/packages/logger/main.ts
+++ b/packages/logger/main.ts
@@ -257,6 +257,24 @@ export class Logger {
   public fatal(namespace: string, ...messages: any[]): void {
     this.logWithLevel(LogLevel.FATAL, namespace, ...messages)
   }
+
+  /**
+   * 创建一个固定命名空间的日志记录器
+   * @param namespace 命名空间
+   * @returns 带有固定命名空间的日志记录器
+   */
+  public createNamespace(namespace: string) {
+    return {
+      trace: (...messages: any[]) => this.trace(namespace, ...messages),
+      debug: (...messages: any[]) => this.debug(namespace, ...messages),
+      info: (...messages: any[]) => this.info(namespace, ...messages),
+      warn: (...messages: any[]) => this.warn(namespace, ...messages),
+      error: (...messages: any[]) => this.error(namespace, ...messages),
+      fatal: (...messages: any[]) => this.fatal(namespace, ...messages),
+      setLevel: (level: LogLevel) => this.setLevel(level),
+      getLevel: () => this.getLevel(),
+    }
+  }
 }
 
 // 默认实例
diff --git a/packages/logger/preload.ts b/packages/logger/preload.ts
index 8a39788..17a8ea7 100644
--- a/packages/logger/preload.ts
+++ b/packages/logger/preload.ts
@@ -12,6 +12,20 @@ interface IRendererLogger {
   error(namespace: string, ...messages: any[]): void
   fatal(namespace: string, ...messages: any[]): void
   setLevel(level: LogLevel): void
+  createNamespace(namespace: string): INamespacedLogger
+}
+
+/**
+ * 命名空间作用域日志接口
+ */
+interface INamespacedLogger {
+  trace(...messages: any[]): void
+  debug(...messages: any[]): void
+  info(...messages: any[]): void
+  warn(...messages: any[]): void
+  error(...messages: any[]): void
+  fatal(...messages: any[]): void
+  setLevel(level: LogLevel): void
 }
 
 // 日志级别名称映射
@@ -109,6 +123,20 @@ const createRendererLogger = (): IRendererLogger => {
       // 设置日志级别(可选,如果需要在渲染进程中动态调整日志级别)
       ipcRenderer.send("logger:setLevel", level)
     },
+    createNamespace(namespace: string): INamespacedLogger {
+      return {
+        trace: (...messages: any[]) => sendLog(LogLevel.TRACE, namespace, ...messages),
+        debug: (...messages: any[]) => sendLog(LogLevel.DEBUG, namespace, ...messages),
+        info: (...messages: any[]) => sendLog(LogLevel.INFO, namespace, ...messages),
+        warn: (...messages: any[]) => sendLog(LogLevel.WARN, namespace, ...messages),
+        error: (...messages: any[]) => sendLog(LogLevel.ERROR, namespace, ...messages),
+        fatal: (...messages: any[]) => sendLog(LogLevel.FATAL, namespace, ...messages),
+        setLevel: (level: LogLevel) => {
+          currentLevel = level
+          ipcRenderer.send("logger:setLevel", level)
+        }
+      }
+    },
   }
 }