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