/** 表示一个日志记录器 */ export declare class Logger { /** * 初始化新的日志输出器 * @param options 附加选项 */ constructor(options?: LoggerOptions); /** * 记录一条跟踪日志 * @param log 要记录的日志或错误对象 * @param persistent 是否在清屏时保留此日志 */ trace(log: string | Error | LogEntry, persistent?: boolean): void; /** * 记录一条调试日志 * @param log 要记录的日志或错误对象 * @param persistent 是否在清屏时保留此日志 */ debug(log: string | Error | LogEntry, persistent?: boolean): void; /** * 记录一条普通日志 * @param log 要记录的日志或错误对象 * @param persistent 是否在清屏时保留此日志 */ log(log: string | Error | LogEntry, persistent?: boolean): void; /** * 记录一条信息日志 * @param log 要记录的日志或错误对象 * @param persistent 是否在清屏时保留此日志 */ info(log: string | Error | LogEntry, persistent?: boolean): void; /** * 记录一条成功日志 * @param log 要记录的日志或错误对象 * @param persistent 是否在清屏时保留此日志 */ success(log: string | Error | LogEntry, persistent?: boolean): void; /** * 记录一条警告日志 * @param log 要记录的日志或错误对象 * @param persistent 是否在清屏时保留此日志 */ warning(log: string | Error | LogEntry, persistent?: boolean): void; /** * 记录一条错误日志 * @param log 要记录的日志或错误对象 * @param persistent 是否在清屏时保留此日志 */ error(log: string | Error | LogEntry, persistent?: boolean): void; /** * 记录一条致命错误日志 * @param log 要记录的日志或错误对象 * @param persistent 是否在清屏时保留此日志 */ fatal(log: string | Error | LogEntry, persistent?: boolean): void; /** 获取或设置允许打印的最低日志等级 */ logLevel: LogLevel; /** * 判断是否忽略指定日志的回调函数 * @param log 要记录的日志或错误对象 * @param logLevel 日志等级 * @param persistent 是否在清屏时保留此日志 */ ignore?: (log: string | Error | LogEntry, logLevel: LogLevel, persistent?: boolean) => boolean; /** * 底层实现打印一条日志 * @param log 要格式化的日志或错误对象或错误信息 * @param level 日志的等级 * @param persistent 是否在清屏时保留此日志 */ write(log: string | Error | LogEntry, level: LogLevel, persistent?: boolean): void; /** * 当被子类重写后负责自定义打印日志的方式 * @param content 要写入的内容 * @param level 日志的等级 */ protected writeRaw(content: string, level: LogLevel): void; /** 获取或设置当前错误或警告的编号 */ errorOrWarningCounter: number | false; /** 在成功日志前追加的前缀 */ successIcon: string; /** 在警告日志前追加的前缀 */ warningIcon: string; /** 在错误日志前追加的前缀 */ errorIcon: string; /** 在致命错误日志前追加的前缀 */ fatalIcon: string; /** 判断或设置是否打印带颜色 ANSI 控制符的日志 */ colors?: boolean; /** 判断或设置是否打印图形表情 */ emoji: boolean; /** 判断或设置是否打印时间戳 */ timestamp: boolean; /** 判断或设置是否打印代码片段 */ codeFrame: boolean; /** * 格式化一条日志 * @param log 要格式化的日志或错误对象或错误信息 * @param level 日志的等级 * @param colors 是否追加颜色控制符 */ formatLog(log: string | LogEntry, level?: LogLevel, colors?: boolean): string; /** * 格式化指定的错误堆栈信息 * @param stack 要格式化的错误堆栈信息 */ formatStack(stack: string): string; /** 判断或设置是否打印完整绝对路径 */ fullPath: boolean; /** 获取或设置路径的基路径 */ baseDir: string; /** * 格式化指定的路径 * @param path 要格式化的路径 */ formatPath(path: string): string; /** 判断或设置是否禁止清除日志 */ persistent: boolean; /** 已保留的固定日志 */ private _persistentLogs?; /** * 清除控制台中的所有日志 * @param all 是否清除所有日志 */ clear(all?: boolean): void; /** 获取或设置当前的进度百分比(0 到 100 之间)*/ progressPercent?: number; /** 获取或设置当前的进度条文案 */ progressText?: string; /** 获取或设置进度指示器更新的间隔毫秒数 */ spinnerInterval: number; /** 判断是否需要隐藏光标 */ hideCursor: boolean; /** 原输出流写入函数 */ private _originalStdoutWrite?; /** 原错误流写入函数 */ private _originalStderrWrite?; /** 自动更新进度条的定时器 */ private _updateTimer?; /** * 显示或更新进度条 * @param value 要设置的进度条文案 */ showProgress(value?: string): void; /** 获取或设置进度指示器的所有桢 */ spinnerFrames: string[]; /** 存储进度指示器的当前桢号 */ private _spinnerFrameIndex; /** 上一次更新进度条的时间戳 */ private _lastUpdateTime; /** 更新进度条 */ private _updateProgress; /** 隐藏进度条 */ hideProgress(): void; /** 获取或设置是否打印进度条 */ progress: boolean; /** 最后一个任务 */ private _lastTask?; /** 优先提示的任务 */ private _persistentTasks?; /** * 记录将开始执行指定的任务 * @param taskName 要执行的任务名 * @param detail 要执行的任务详情 * @param persistent 在任务未完成前是否持续提示此任务 * @returns 返回任务编号 */ begin(taskName: string, detail?: string, persistent?: boolean): { /** 上一条任务 */ prev?: any; /** 下一条任务 */ next?: any; /** 当前任务关联的日志 */ content: string; }; /** * 记录指定的任务已结束 * @param taskId 要结束的任务编号 */ end(taskId: ReturnType): void; /** * 重置日志记录器 */ reset(): void; } /** 表示日志记录器的选项 */ export interface LoggerOptions { /** * 允许打印的最低日志等级 * @default "log" */ logLevel?: LogLevel | keyof typeof LogLevel; /** * 判断是否忽略指定日志的正则表达式或回调函数 * @param log 要记录的日志或错误对象 * @param logLevel 日志等级 * @param persistent 是否在清屏时保留此日志 */ ignore?: RegExp | ((log: string | Error | LogEntry, logLevel: LogLevel, persistent?: boolean) => boolean); /** * 是否打印带颜色控制符的日志 * @default process.stdout.isTTY && !process.env["NODE_DISABLE_COLORS"] */ colors?: boolean; /** * 是否打印图形表情 * @default process.platform !== "win32" || !/^\d\./.test(require("os").release()) */ emoji?: boolean; /** * 是否打印时间戳 * @default true */ timestamp?: boolean; /** * 是否打印完整绝对路径 * @default false */ fullPath?: boolean; /** * 打印相对路径时使用的基路径 * @default process.cwd() */ baseDir?: string; /** * 是否打印代码片段 * @default true */ codeFrame?: boolean; /** * 是否禁止清屏 * @default !this.colors */ persistent?: boolean; /** * 是否打印进度条 * @default this.colors */ progress?: boolean; /** * 进度指示器的所有桢 * @default this.emoji ? ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"] : ["-", "\\", "|", "/"] */ spinnerFrames?: string[]; /** * 进度指示器自动切换桢的毫秒数 * @default 90 */ spinnerInterval?: number; /** * 是否需要隐藏控制台光标 * @default true */ hideCursor?: boolean; /** * 在错误或警告前追加的起始编号,设为 `false` 则不追加编号 */ errorOrWarningCounter?: number | false; /** * 在成功日志前追加的前缀 * @default this.emoji ? process.platform === "win32" ? "✔ " : "√ " : "[info]" */ successIcon?: string; /** * 在警告日志前追加的前缀 * @default this.emoji ? process.platform === "win32" ? "⚠ " : "⚠️ " : "[warning]" */ warningIcon?: string; /** * 在错误日志前追加的前缀 * @default this.emoji ? process.platform === "win32" ? "✘ " : "× " : "[error]" */ errorIcon?: string; /** * 在致命错误日志前追加的前缀 * @default options.fatalIcon !== undefined ? options.fatalIcon : this.errorIcon */ fatalIcon?: string; } /** 表示日志的等级 */ export declare const enum LogLevel { /** 跟踪信息 */ trace = 0, /** 调试信息 */ debug = 1, /** 普通日志 */ log = 2, /** 重要信息 */ info = 3, /** 成功信息 */ success = 4, /** 警告 */ warning = 5, /** 错误 */ error = 6, /** 致命错误 */ fatal = 7, /** 无日志 */ silent = 8 } /** 表示一条日志项 */ export interface LogEntry { [key: string]: any; /** 日志的来源 */ source?: string; /** 日志的信息 */ message?: string; /** 日志相关的文件名 */ fileName?: string; /** 日志相关的行号(从 0 开始)*/ line?: number; /** 日志相关的列号(从 0 开始)*/ column?: number; /** 日志相关的结束行号(从 0 开始)*/ endLine?: number; /** 日志相关的结束列号(从 0 开始)*/ endColumn?: number; /** 日志的详情 */ detail?: string; /** 日志相关的源代码片段 */ codeFrame?: string; /** 错误堆栈信息 */ stack?: string; }