@feizk/logger 1.6.0 → 2.0.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.
- package/README.md +140 -58
- package/dist/index.d.mts +182 -41
- package/dist/index.d.ts +182 -41
- package/dist/index.js +289 -133
- package/dist/index.mjs +286 -121
- package/package.json +14 -6
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,70 +1,211 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Log levels ordered by severity.
|
|
3
|
+
* - trace: Very detailed debugging information
|
|
4
|
+
* - debug: Detailed information for debugging
|
|
5
|
+
* - info: General informational messages
|
|
6
|
+
* - warn: Warning conditions
|
|
7
|
+
* - error: Error conditions
|
|
8
|
+
* - fatal: Critical errors that may terminate the application
|
|
9
|
+
*/
|
|
10
|
+
type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';
|
|
11
|
+
/**
|
|
12
|
+
* A structured log entry passed to transports and formatters.
|
|
13
|
+
*/
|
|
14
|
+
interface LogEntry {
|
|
15
|
+
/** The log level of this entry */
|
|
16
|
+
level: LogLevel;
|
|
17
|
+
/** ISO 8601 formatted timestamp */
|
|
18
|
+
timestamp: string;
|
|
19
|
+
/** Original arguments passed to the log method */
|
|
20
|
+
args: unknown[];
|
|
21
|
+
/** Optional prefix from the logger hierarchy */
|
|
22
|
+
prefix?: string;
|
|
23
|
+
/** Context metadata attached to the logger */
|
|
24
|
+
context: Record<string, unknown>;
|
|
7
25
|
}
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Pluggable transport interface.
|
|
28
|
+
* Implement this interface to create custom log transports.
|
|
29
|
+
*/
|
|
30
|
+
interface Transport {
|
|
31
|
+
/**
|
|
32
|
+
* Called for each log entry.
|
|
33
|
+
* @param entry - The structured log entry
|
|
34
|
+
*/
|
|
35
|
+
log(entry: LogEntry): void | Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Optional cleanup method called when the logger is destroyed.
|
|
38
|
+
*/
|
|
39
|
+
destroy?(): void | Promise<void>;
|
|
12
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Timestamp option: preset string or custom formatter function.
|
|
43
|
+
* - 'iso': ISO 8601 format (default)
|
|
44
|
+
* - 'locale': Localized date/time string
|
|
45
|
+
* - function: Custom formatter
|
|
46
|
+
*/
|
|
47
|
+
type TimestampOption = 'iso' | 'locale' | ((date: Date) => string);
|
|
48
|
+
/**
|
|
49
|
+
* Custom formatter function for log output.
|
|
50
|
+
* @param entry - The structured log entry
|
|
51
|
+
* @returns The formatted string to output to console
|
|
52
|
+
*/
|
|
53
|
+
type Formatter = (entry: LogEntry) => string;
|
|
54
|
+
/**
|
|
55
|
+
* Options for creating a child logger.
|
|
56
|
+
*/
|
|
57
|
+
interface ChildLoggerOptions {
|
|
58
|
+
/** Prefix to prepend to log messages */
|
|
59
|
+
prefix?: string;
|
|
60
|
+
/** Additional context metadata */
|
|
61
|
+
context?: Record<string, unknown>;
|
|
62
|
+
/** Override log level for this child logger */
|
|
63
|
+
level?: LogLevel;
|
|
64
|
+
/** Override silent mode for this child logger */
|
|
65
|
+
silent?: boolean;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Main logger configuration options.
|
|
69
|
+
*/
|
|
13
70
|
interface LoggerOptions {
|
|
14
|
-
|
|
15
|
-
formatTimestamp?: (types: TimestampTypes, date?: Date) => [TimestampType, string];
|
|
16
|
-
formatLog?: (level: string, timestamp: string, args: unknown[]) => string;
|
|
71
|
+
/** Minimum log level to output (default: 'debug') */
|
|
17
72
|
level?: LogLevel;
|
|
18
|
-
|
|
73
|
+
/** Suppress all console output (default: false) */
|
|
74
|
+
silent?: boolean;
|
|
75
|
+
/** Enable colored output (default: true) */
|
|
76
|
+
enableColors?: boolean;
|
|
77
|
+
/** Timestamp format (default: 'iso') */
|
|
78
|
+
timestamp?: TimestampOption;
|
|
79
|
+
/** Custom formatter for log output */
|
|
80
|
+
formatter?: Formatter;
|
|
81
|
+
/** Output logs as JSON (default: false) */
|
|
82
|
+
json?: boolean;
|
|
83
|
+
/** Initial transports to attach */
|
|
84
|
+
transports?: Transport[];
|
|
85
|
+
/** Prefix for all log messages */
|
|
86
|
+
prefix?: string;
|
|
87
|
+
/** Initial context metadata */
|
|
88
|
+
context?: Record<string, unknown>;
|
|
19
89
|
}
|
|
20
90
|
|
|
21
91
|
/**
|
|
22
|
-
* A
|
|
92
|
+
* A lightweight, pluggable logger with colored outputs, structured logging, and transport support.
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* import { Logger } from '@feizk/logger';
|
|
97
|
+
*
|
|
98
|
+
* const logger = new Logger();
|
|
99
|
+
*
|
|
100
|
+
* logger.info('Hello, world!');
|
|
101
|
+
* logger.warn('This is a warning');
|
|
102
|
+
* logger.error('This is an error');
|
|
103
|
+
* ```
|
|
23
104
|
*/
|
|
24
105
|
declare class Logger {
|
|
25
|
-
private options;
|
|
26
|
-
private
|
|
27
|
-
|
|
106
|
+
private readonly options;
|
|
107
|
+
private readonly transports;
|
|
108
|
+
private readonly prefix?;
|
|
109
|
+
private readonly context;
|
|
28
110
|
/**
|
|
29
|
-
*
|
|
30
|
-
* @param
|
|
111
|
+
* Create a new Logger instance.
|
|
112
|
+
* @param options - Configuration options
|
|
31
113
|
*/
|
|
32
|
-
|
|
114
|
+
constructor(options?: LoggerOptions);
|
|
33
115
|
/**
|
|
34
|
-
*
|
|
35
|
-
* @param
|
|
36
|
-
* @param timestamp - The formatted timestamp.
|
|
37
|
-
* @param args - The log arguments.
|
|
116
|
+
* Log a trace message (most verbose).
|
|
117
|
+
* @param args - Arguments to log
|
|
38
118
|
*/
|
|
39
|
-
|
|
119
|
+
trace(...args: unknown[]): void;
|
|
40
120
|
/**
|
|
41
|
-
*
|
|
42
|
-
* @param
|
|
43
|
-
* @returns True if the message should be logged.
|
|
121
|
+
* Log a debug message.
|
|
122
|
+
* @param args - Arguments to log
|
|
44
123
|
*/
|
|
45
|
-
|
|
124
|
+
debug(...args: unknown[]): void;
|
|
46
125
|
/**
|
|
47
|
-
*
|
|
48
|
-
* @param args -
|
|
126
|
+
* Log an info message.
|
|
127
|
+
* @param args - Arguments to log
|
|
49
128
|
*/
|
|
50
129
|
info(...args: unknown[]): void;
|
|
51
130
|
/**
|
|
52
|
-
*
|
|
53
|
-
* @param args -
|
|
131
|
+
* Log a warning message.
|
|
132
|
+
* @param args - Arguments to log
|
|
54
133
|
*/
|
|
55
134
|
warn(...args: unknown[]): void;
|
|
56
135
|
/**
|
|
57
|
-
*
|
|
58
|
-
* @param args -
|
|
136
|
+
* Log an error message.
|
|
137
|
+
* @param args - Arguments to log
|
|
59
138
|
*/
|
|
60
139
|
error(...args: unknown[]): void;
|
|
61
140
|
/**
|
|
62
|
-
*
|
|
63
|
-
* @param args -
|
|
141
|
+
* Log a fatal message (most severe).
|
|
142
|
+
* @param args - Arguments to log
|
|
64
143
|
*/
|
|
65
|
-
|
|
144
|
+
fatal(...args: unknown[]): void;
|
|
145
|
+
/**
|
|
146
|
+
* Set the minimum log level.
|
|
147
|
+
* @param level - The log level to set
|
|
148
|
+
*/
|
|
149
|
+
setLevel(level: LogLevel): void;
|
|
150
|
+
/**
|
|
151
|
+
* Get the current log level.
|
|
152
|
+
* @returns The current log level
|
|
153
|
+
*/
|
|
154
|
+
getLevel(): LogLevel;
|
|
155
|
+
/**
|
|
156
|
+
* Add a transport to the logger.
|
|
157
|
+
* @param transport - The transport to add
|
|
158
|
+
*/
|
|
159
|
+
addTransport(transport: Transport): void;
|
|
160
|
+
/**
|
|
161
|
+
* Remove a transport from the logger.
|
|
162
|
+
* @param transport - The transport to remove
|
|
163
|
+
*/
|
|
164
|
+
removeTransport(transport: Transport): void;
|
|
165
|
+
/**
|
|
166
|
+
* Create a child logger with additional prefix and context.
|
|
167
|
+
* @param options - Child logger options
|
|
168
|
+
* @returns A new Logger instance
|
|
169
|
+
*/
|
|
170
|
+
child(options?: ChildLoggerOptions): Logger;
|
|
171
|
+
/**
|
|
172
|
+
* Destroy the logger and all its transports.
|
|
173
|
+
* Calls destroy() on all registered transports.
|
|
174
|
+
*/
|
|
175
|
+
destroy(): Promise<void>;
|
|
176
|
+
/**
|
|
177
|
+
* Core logging method - all public methods delegate here.
|
|
178
|
+
* @param level - The log level
|
|
179
|
+
* @param args - The arguments to log
|
|
180
|
+
*/
|
|
181
|
+
private log;
|
|
182
|
+
/**
|
|
183
|
+
* Write a log entry to the console.
|
|
184
|
+
* @param level - The log level
|
|
185
|
+
* @param entry - The log entry
|
|
186
|
+
*/
|
|
187
|
+
private writeToConsole;
|
|
188
|
+
/**
|
|
189
|
+
* Dispatch a log entry to a transport.
|
|
190
|
+
* @param transport - The transport
|
|
191
|
+
* @param entry - The log entry
|
|
192
|
+
*/
|
|
193
|
+
private dispatchToTransport;
|
|
194
|
+
/**
|
|
195
|
+
* Check if a log level should be output.
|
|
196
|
+
* @param level - The log level to check
|
|
197
|
+
* @returns True if the message should be logged
|
|
198
|
+
*/
|
|
199
|
+
private shouldLog;
|
|
66
200
|
}
|
|
67
201
|
|
|
68
|
-
|
|
202
|
+
/**
|
|
203
|
+
* Log level priorities ordered by severity (lower = less severe).
|
|
204
|
+
*/
|
|
205
|
+
declare const LOG_LEVEL_PRIORITIES: Record<LogLevel, number>;
|
|
206
|
+
/**
|
|
207
|
+
* Text labels for log levels.
|
|
208
|
+
*/
|
|
209
|
+
declare const LEVEL_LABELS: Record<LogLevel, string>;
|
|
69
210
|
|
|
70
|
-
export { type
|
|
211
|
+
export { type ChildLoggerOptions, type Formatter, LEVEL_LABELS, LOG_LEVEL_PRIORITIES, type LogEntry, type LogLevel, Logger, type LoggerOptions, type TimestampOption, type Transport };
|