import type { Primitive } from '../types'; /** * 允许接收的内容类型 * symbol 隐式转字符串会报错 */ declare type ContentType = Exclude; /** * 日志等级 */ declare enum LOG_LEVEL { ALL = 0, TRACE = 1, DEBUG = 2, INFO = 3, WARN = 4, ERROR = 5, FATAL = 6, OFF = 7 } /** * 消息相关内容 */ declare class Content { /** * 记录时间 */ readonly logDate: Date; /** * 日志内容 */ readonly content: ContentType; /** * 日志等级 */ readonly logLevel: LOG_LEVEL; /** * logger 标识 */ readonly identifier: string; constructor(content: ContentType, logLevel: LOG_LEVEL, identifier: string); /** * 获取经过格式化的日志日期 */ getFormattedLogDate(): string; /** * 获取经过格式化的日志时间 */ getFormattedLogTime(): string; /** * 获取经过格式化的日志日期和时间 */ getFormattedLogDateTime(): string; /** * 获取格式化后的消息 */ getFormattedMessage(): string; } declare type Listener = (content: Content) => void; declare class Logger { static LOG_LEVEL: typeof LOG_LEVEL; static Content: typeof Content; /** * logger 实例 */ private static instances; /** * 是否有效 * 如果移除之后,改为无效 */ private valid; /** * 实例标识 */ private identifier; /** * 大于等于当前等级的才会打印 * 默认不打印日志 */ private level; /** * 订阅函数 */ private listeners; /** * 私有化构造函数 * 不允许外部初始化 */ private constructor(); /** * 单例工厂,获取logger实例 */ static getLogger(identifier?: string): Logger; /** * 移除实例 * @description 获取之后保存在外部的实例无法更改 * @returns 是否移除成功 */ static removeLogger(logger: Logger): boolean; static removeLoggerAll(): void; /** * 统一处理日志内容 */ private print; /** * 内部发布消息,给订阅的函数 */ private publish; /** * 获取当前日志等级 */ getLevel(): LOG_LEVEL; /** * 设置日志等级 */ setLevel(level: LOG_LEVEL): void; /** * 添加订阅 */ subscribe(listener: Listener): void; /** * 取消订阅 * @param listener - 要取消订阅的回调 * @returns - 是否清除成功 */ unsubscribe(listener: Listener): boolean; /** * 清除全部订阅 */ unsubscribeAll(): void; /** * 默认的监听函数 */ private defaultListener; /** * 设置默认配置 * * 1. 使用`console.log`输出所有等级的日志 * 2. 使用默认格式化方式 * * 调用后会将原有的日志等级调整为ALL */ setDefaultConfig(): void; /** * 移除默认的监听器 * * 调用后会将原有的日志等级调整为OFF */ removeDefaultConfig(): void; /** * trace 日志 */ trace(content: ContentType): void; /** * debug 日志 */ debug(content: ContentType): void; /** * info 日志 */ info(content: ContentType): void; /** * warn 日志 */ warn(content: ContentType): void; /** * error 日志 */ error(content: ContentType): void; /** * fatal 日志 */ fatal(content: ContentType): void; /** * 是否打印 trace 级别的日志 */ isTraceEnabled(): boolean; /** * 是否打印 debug 级别的日志 */ isDebugEnabled(): boolean; /** * 是否打印 info 级别的日志 */ isInfoEnabled(): boolean; /** * 是否打印 warn 级别的日志 */ isWarnEnabled(): boolean; /** * 是否打印 error 级别的日志 */ isErrorEnabled(): boolean; /** * 是否打印 fatal 级别的日志 */ isFatalEnabled(): boolean; } export default Logger;