import type { LoggerConfig, LoggerInterface, LogLevelName, ShutdownOptions } from '../types'; import { type EffectiveLoggerProfile } from './model'; import { ConfigLoader } from './ConfigLoader'; import { captureLogPosition } from './LogPosition'; import { type DiagnosticWriter } from './diagnostics'; /** 写入请求将命名日志器选择的策略一并传入共享运行时,避免运行期再次查找可变配置。 */ interface LogWriteRequest { readonly name: string; readonly profile: EffectiveLoggerProfile; readonly level: LogLevelName; readonly message: string; readonly metaArguments: readonly unknown[]; } /** 测试或宿主应用可替换配置加载、兜底诊断与运行环境读取,但日志工厂的生命周期语义保持不变。 */ export interface LoggerFactoryRuntimeOptions { readonly configLoader?: ConfigLoader; readonly diagnostics?: DiagnosticWriter; readonly currentWorkingDirectory?: () => string; readonly captureLogPosition?: typeof captureLogPosition; } /** 集中管理配置、缓存与关闭状态,避免命名日志器各自创建传输并产生重复输出或资源竞争。 */ export declare class LoggerFactoryRuntime { private readonly configLoader; private readonly diagnostics; private readonly currentWorkingDirectory; private readonly capturePosition; /** 日志器缓存中 K 为去除首尾空白后的业务名称,V 为绑定稳定配置的命名日志器实例。 */ private readonly namedLoggers; private state; private config?; private masker?; private runtime?; private projectRoot?; private shutdownPromise?; /** * 创建独立日志运行时,便于测试或多实例宿主隔离配置和诊断通道。 * * @param options 可替换的配置加载器、诊断写入器与运行环境读取函数。 * @returns 新的日志运行时实例。 * @throws 不主动抛出异常。 */ constructor(options?: LoggerFactoryRuntimeOptions); /** * 原子初始化日志配置、脱敏器和 Winston 传输,防止暴露半初始化状态。 * * @param source 显式配置对象或配置文件路径。 * @returns 无返回值;已成功初始化时保持幂等。 * @throws {LoggerLifecycleError} 当运行时正在关闭或已经关闭时抛出。 * @throws {LoggerConfigError} 当配置来源或配置内容无效时由加载链路抛出。 */ init(source?: string | LoggerConfig): void; /** * 按规范化名称复用命名日志器,并在首次调用时延迟初始化默认配置。 * * @param name 业务模块使用的日志器名称。 * @returns 与规范化名称对应的稳定日志器实例。 * @throws {TypeError} 当名称不是非空字符串时抛出。 * @throws {LoggerLifecycleError} 当运行时正在关闭或已经关闭时抛出。 * @throws {LoggerConfigError} 当延迟初始化读取到无效配置时由加载链路抛出。 */ getLogger(name: string): LoggerInterface; /** * 规范化、脱敏并路由单条日志,确保所有输出通道共享同一安全处理链路。 * * @param request 命名日志器生成的完整写入请求。 * @returns 无返回值;运行时不可写或日志被过滤时直接返回。 * @throws {TypeError} 当日志消息不是字符串时抛出。 * @throws 当底层 Winston 同步写入失败时透传对应异常。 */ write({ name, profile, level, message, metaArguments }: LogWriteRequest): void; /** * 幂等关闭共享 Winston 运行时并等待已接收日志刷新,供多个应用退出钩子安全复用。 * * @param options 关闭等待时间配置。 * @returns 所有传输完成关闭后的 Promise。 * @throws 返回的 Promise 会在超时无效、刷新超时或底层流失败时拒绝。 */ shutdown(options?: ShutdownOptions): Promise; } /** 提供进程级日志入口,使业务模块共享一次初始化和统一的关闭流程。 */ export declare class LoggerFactory { private constructor(); /** * 初始化默认进程级日志工厂,重复调用不会切换已经生效的配置。 * * @param source 显式配置对象或配置文件路径。 * @returns 无返回值。 * @throws {LoggerLifecycleError} 当默认工厂正在关闭或已经关闭时抛出。 * @throws {LoggerConfigError} 当配置来源或配置内容无效时由加载链路抛出。 */ static init(source?: string | LoggerConfig): void; /** * 获取默认工厂中的命名日志器,让业务模块共享统一配置和传输资源。 * * @param name 业务模块使用的日志器名称。 * @returns 与规范化名称对应的日志器实例。 * @throws {TypeError} 当名称不是非空字符串时抛出。 * @throws {LoggerLifecycleError} 当默认工厂正在关闭或已经关闭时抛出。 * @throws {LoggerConfigError} 当延迟初始化读取到无效配置时由加载链路抛出。 */ static getLogger(name: string): LoggerInterface; /** * 关闭默认日志工厂,便于应用在退出前显式等待日志刷新。 * * @param options 关闭等待时间配置。 * @returns 默认工厂完成关闭后的 Promise。 * @throws 返回的 Promise 会在超时无效、刷新超时或底层流失败时拒绝。 */ static shutdown(options?: ShutdownOptions): Promise; } export {}; //# sourceMappingURL=LoggerFactory.d.ts.map