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) + } + } + }, } }