@zhin.js/logger 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,273 @@
1
+ import { WriteStream } from 'node:fs';
2
+ /**
3
+ * 日志级别枚举
4
+ */
5
+ export declare enum LogLevel {
6
+ DEBUG = 0,
7
+ INFO = 1,
8
+ WARN = 2,
9
+ ERROR = 3,
10
+ SILENT = 4
11
+ }
12
+ /**
13
+ * 日志级别名称映射
14
+ */
15
+ export declare const LOG_LEVEL_NAMES: Record<LogLevel, string>;
16
+ /**
17
+ * 日志级别颜色映射
18
+ */
19
+ export declare const LOG_LEVEL_COLORS: Record<LogLevel, (text: string) => string>;
20
+ /**
21
+ * 日志条目接口
22
+ */
23
+ export interface LogEntry {
24
+ level: LogLevel;
25
+ name: string;
26
+ message: string;
27
+ timestamp: Date;
28
+ args: any[];
29
+ error?: Error;
30
+ }
31
+ /**
32
+ * 日志格式化器接口
33
+ */
34
+ export interface LogFormatter {
35
+ format(entry: LogEntry): string;
36
+ }
37
+ /**
38
+ * 日志输出器接口
39
+ */
40
+ export interface LogTransport {
41
+ write(formatted: string): void;
42
+ }
43
+ /**
44
+ * Transport安全选项
45
+ */
46
+ export interface TransportSecurityOptions {
47
+ /** 是否移除ANSI转义序列 */
48
+ removeAnsi?: boolean;
49
+ /** 是否脱敏敏感信息 */
50
+ maskSensitive?: boolean;
51
+ }
52
+ /**
53
+ * 颜色函数类型
54
+ */
55
+ export type ColorFunction = (text: string) => string;
56
+ /**
57
+ * Logger 颜色配置选项
58
+ */
59
+ export interface LoggerColorOptions {
60
+ /** 日志级别颜色映射(覆盖默认级别颜色) */
61
+ levelColors?: Partial<Record<LogLevel, ColorFunction>>;
62
+ /** Logger名称颜色(可以是单个颜色或颜色数组) */
63
+ nameColor?: ColorFunction | ColorFunction[];
64
+ /** 日期时间颜色 */
65
+ dateColor?: ColorFunction;
66
+ }
67
+ /**
68
+ * Logger 配置选项
69
+ */
70
+ export interface LoggerOptions {
71
+ /** 日志级别 */
72
+ level?: LogLevel;
73
+ /** 自定义格式化器 */
74
+ formatter?: LogFormatter;
75
+ /** 输出器列表 */
76
+ transports?: LogTransport[];
77
+ /** 颜色配置 */
78
+ colors?: LoggerColorOptions;
79
+ /** 性能选项 */
80
+ performance?: {
81
+ /** 最大子Logger数量(默认1000) */
82
+ maxChildLoggers?: number;
83
+ /** 最大Timer数量(默认100) */
84
+ maxTimers?: number;
85
+ };
86
+ }
87
+ /**
88
+ * 默认格式化器 - 【date】【level】【name】:【message】
89
+ * 只负责格式化,不处理安全净化(由Transport处理)
90
+ */
91
+ export declare class DefaultFormatter implements LogFormatter {
92
+ private nameColorMap;
93
+ private colorIndex;
94
+ private readonly maxCacheSize;
95
+ private levelColors;
96
+ private nameColors;
97
+ private dateColor;
98
+ constructor(colorOptions?: LoggerColorOptions);
99
+ private getNameColor;
100
+ format(entry: LogEntry): string;
101
+ }
102
+ /**
103
+ * 控制台输出器 - 开发友好,默认保留颜色和完整信息
104
+ */
105
+ export declare class ConsoleTransport implements LogTransport {
106
+ private securityOptions?;
107
+ constructor(securityOptions?: TransportSecurityOptions | undefined);
108
+ write(formatted: string): void;
109
+ }
110
+ /**
111
+ * 文件输出器 - 生产安全,默认去除颜色和脱敏
112
+ */
113
+ export declare class FileTransport implements LogTransport {
114
+ private stream;
115
+ private securityOptions?;
116
+ constructor(stream: WriteStream, securityOptions?: TransportSecurityOptions | undefined);
117
+ write(formatted: string): void;
118
+ }
119
+ /**
120
+ * 流输出器 - 可配置安全选项
121
+ */
122
+ export declare class StreamTransport implements LogTransport {
123
+ private stream;
124
+ private securityOptions?;
125
+ constructor(stream: NodeJS.WritableStream, securityOptions?: TransportSecurityOptions | undefined);
126
+ write(formatted: string): void;
127
+ }
128
+ /**
129
+ * 性能计时器
130
+ */
131
+ export interface Timer {
132
+ end(): void;
133
+ }
134
+ /**
135
+ * Logger 类 - 自管理子 Logger
136
+ */
137
+ export declare class Logger {
138
+ #private;
139
+ private level;
140
+ private formatter;
141
+ private transports;
142
+ private timers;
143
+ private childLoggers;
144
+ private readonly maxChildLoggers;
145
+ private readonly maxTimers;
146
+ constructor(parent: Logger | null, name: string, options?: LoggerOptions);
147
+ get name(): string;
148
+ set name(name: string);
149
+ /**
150
+ * 设置日志级别
151
+ * @param level
152
+ * @param recursive 是否同时设置所有子 Logger 的级别
153
+ */
154
+ setLevel(level: LogLevel, recursive?: boolean): void;
155
+ /**
156
+ * 递归设置级别,带深度检查
157
+ */
158
+ private setLevelRecursive;
159
+ /**
160
+ * 获取当前日志级别
161
+ */
162
+ getLevel(): LogLevel;
163
+ /**
164
+ * 检查指定级别是否启用
165
+ */
166
+ isLevelEnabled(level: LogLevel): boolean;
167
+ /**
168
+ * 添加输出器
169
+ * @param transport
170
+ * @param recursive 是否同时添加到所有子 Logger
171
+ */
172
+ addTransport(transport: LogTransport, recursive?: boolean): void;
173
+ /**
174
+ * 移除输出器
175
+ * @param transport
176
+ * @param recursive 是否同时从所有子 Logger 移除
177
+ */
178
+ removeTransport(transport: LogTransport, recursive?: boolean): void;
179
+ /**
180
+ * 设置格式化器
181
+ * @param formatter
182
+ * @param recursive 是否同时设置所有子 Logger 的格式化器
183
+ */
184
+ setFormatter(formatter: LogFormatter, recursive?: boolean): void;
185
+ hasLogger(name: string): boolean;
186
+ /**
187
+ * 获取或创建子 Logger
188
+ * @param namespace 子命名空间
189
+ * @param options 可选配置,会覆盖从父级继承的配置
190
+ */
191
+ getLogger(namespace: string, options?: LoggerOptions): Logger;
192
+ /**
193
+ * 检查并清理过多的子Logger
194
+ */
195
+ private checkChildLoggerLimit;
196
+ setLogger(name: string, options?: LoggerOptions): Logger;
197
+ setOptions(options?: LoggerOptions): void;
198
+ /**
199
+ * 移除子 Logger
200
+ */
201
+ removeLogger(namespace: string): boolean;
202
+ /**
203
+ * 获取所有子 Logger 名称
204
+ */
205
+ getLoggerNames(): string[];
206
+ get parent(): Logger | null;
207
+ /**
208
+ * 检查是否为根 Logger
209
+ */
210
+ isRoot(): boolean;
211
+ /**
212
+ * 记录日志的通用方法
213
+ */
214
+ private log;
215
+ /**
216
+ * DEBUG 级别日志
217
+ */
218
+ debug(message: string, ...args: any[]): void;
219
+ /**
220
+ * INFO 级别日志
221
+ */
222
+ info(message: string, ...args: any[]): void;
223
+ /**
224
+ * SUCCESS 日志(INFO 级别,带绿色 ✓ 标记)
225
+ */
226
+ success(message: string, ...args: any[]): void;
227
+ /**
228
+ * WARN 级别日志
229
+ */
230
+ warn(message: string, ...args: any[]): void;
231
+ /**
232
+ * ERROR 级别日志
233
+ * 支持传入Error对象,会自动打印错误堆栈信息
234
+ * @param message 错误消息
235
+ * @param args 其他参数,如果第一个参数是Error对象,会使用其message并打印堆栈
236
+ */
237
+ error(message: string, ...args: any[]): void;
238
+ /**
239
+ * 开始性能计时
240
+ */
241
+ time(label: string): Timer;
242
+ /**
243
+ * 清理过期的Timer
244
+ */
245
+ private cleanupTimers;
246
+ /**
247
+ * 结束性能计时
248
+ */
249
+ timeEnd(label: string): void;
250
+ /**
251
+ * 条件日志
252
+ */
253
+ logIf(condition: boolean, level: LogLevel, message: string, ...args: any[]): void;
254
+ /**
255
+ * 获取 logger 名称
256
+ */
257
+ getName(): string;
258
+ }
259
+ declare const defaultLogger: Logger;
260
+ export declare function getLogger(name: string, options?: LoggerOptions, parent?: Logger): Logger;
261
+ export declare function setLogger(name: string, options?: LoggerOptions, parent?: Logger): Logger;
262
+ export declare function setOptions(options?: LoggerOptions, logger?: Logger): void;
263
+ export declare function addTransport(transport: LogTransport, logger?: Logger): void;
264
+ export declare function removeTransport(transport: LogTransport, logger?: Logger): void;
265
+ export declare function setFormatter(formatter: LogFormatter, logger?: Logger): void;
266
+ export declare function setLevel(level: LogLevel, logger?: Logger): void;
267
+ export declare function getLevel(logger?: Logger): LogLevel;
268
+ export declare function isLevelEnabled(level: LogLevel, logger?: Logger): boolean;
269
+ export declare function setName(name: string, logger?: Logger): string;
270
+ export declare function getName(logger?: Logger): string;
271
+ export declare function getLoggerNames(logger?: Logger): string[];
272
+ export default defaultLogger;
273
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}