@vvlad1973/simple-logger 2.1.7 → 2.1.8

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.
@@ -1,290 +1,295 @@
1
- /**
2
- * A module for simple logging with various logging levels.
3
- * @module SimpleLogger
4
- */
5
- import util from 'util';
6
- import { getCallerName } from 'vvlad1973-utils';
7
- import { hasChild, isValidLogger } from '../helpers/validators.js';
8
- import { extractContext, extractMessage, colorizeLevel, prepareLogCall, } from '../helpers/helpers.js';
9
- import { LoggerLevels } from '../constants/constants.js';
10
- export default class SimpleLogger {
11
- currentLevelIndex = Object.values(LoggerLevels).indexOf(LoggerLevels.INFO);
12
- logger = console;
13
- bindings = {};
14
- msgPrefix;
15
- enabled = true;
16
- isExternal = false;
17
- static noop = () => { };
18
- trace = SimpleLogger.noop;
19
- debug = SimpleLogger.noop;
20
- info = SimpleLogger.noop;
21
- warn = SimpleLogger.noop;
22
- error = SimpleLogger.noop;
23
- fatal = SimpleLogger.noop;
24
- silent = SimpleLogger.noop;
25
- /**
26
- * Initializes a new instance of the SimpleLogger class.
27
- *
28
- * @param {ExternalLogger | LoggerFactory | null} externalLogger - The external logger to use, or null to use the console.
29
- * @param {LoggerOptions} [options={}] - Options for the logger, such as the logging level and bindings.
30
- */
31
- constructor(externalLogger, options = {}) {
32
- this.initLogger(externalLogger, options);
33
- }
34
- /**
35
- * Resolves the effective logging level based on the provided logger and explicit level.
36
- *
37
- * @param {ExternalLogger | Console} logger - The logger to resolve the level for.
38
- * @param {LoggerLevel} [explicitLevel] - The explicit logging level to use, if provided.
39
- * @return {LoggerLevel} The resolved effective logging level.
40
- */
41
- resolveEffectiveLevel(logger, explicitLevel) {
42
- const levels = Object.values(LoggerLevels);
43
- if (explicitLevel)
44
- return explicitLevel;
45
- if (logger &&
46
- typeof logger === 'object' &&
47
- 'level' in logger &&
48
- typeof logger.level === 'string') {
49
- const lvl = logger.level.toLowerCase();
50
- if (levels.includes(lvl))
51
- return lvl;
52
- }
53
- return levels[this.currentLevelIndex];
54
- }
55
- /**
56
- * Initializes the logger with the provided external logger and options.
57
- *
58
- * Handles different cases for the external logger, including:
59
- * - No external logger provided (falls back to console)
60
- * - External logger is a factory function (e.g. pino)
61
- * - External logger is invalid or console (falls back to console)
62
- * - External logger is provided without parameters
63
- * - External logger has a .child() method
64
- * - External logger does not have a .child() method (uses directly)
65
- *
66
- * @param {ExternalLogger | LoggerFactory | null} externalLogger - The external logger to use, or null to use the console.
67
- * @param {LoggerOptions} options - Options for the logger, such as the logging level and bindings.
68
- * @return {void}
69
- */
70
- initLogger(externalLogger, options = {}) {
71
- const { level, bindings = {}, msgPrefix, transport, ...restOptions } = options;
72
- const hasParams = level || msgPrefix || Object.keys(bindings).length > 0;
73
- const effectiveBindings = {
74
- ...bindings,
75
- ...(msgPrefix ? { msgPrefix } : {}),
76
- };
77
- this.bindings = effectiveBindings;
78
- this.msgPrefix = msgPrefix;
79
- // CASE 1: логгер не передан
80
- if (!externalLogger) {
81
- this.logger = console;
82
- this.isExternal = false;
83
- this.setLevel(this.resolveEffectiveLevel(this.logger, level));
84
- return;
85
- }
86
- // CASE 2: логгер — фабрика (например, pino)
87
- if (typeof externalLogger === 'function') {
88
- this.logger = externalLogger({
89
- level,
90
- ...restOptions,
91
- ...(transport ? { transport } : {}),
92
- });
93
- this.isExternal = true;
94
- this.setLevel(this.resolveEffectiveLevel(this.logger, level));
95
- return;
96
- }
97
- // CASE 3: логгер есть, но он невалиден (нет методов)
98
- if (!isValidLogger(externalLogger) || externalLogger === console) {
99
- console.warn('Invalid or console logger passed, falling back to internal console.');
100
- this.logger = console;
101
- this.isExternal = false;
102
- this.setLevel(this.resolveEffectiveLevel(this.logger, level));
103
- return;
104
- }
105
- // CASE 4: логгер передан без параметров
106
- if (!hasParams) {
107
- this.logger = externalLogger;
108
- this.isExternal = true;
109
- this.setLevel(this.resolveEffectiveLevel(this.logger, level));
110
- return;
111
- }
112
- // CASE 5: логгер с .child()
113
- if (hasChild(externalLogger)) {
114
- this.logger = externalLogger.child({
115
- ...effectiveBindings,
116
- ...restOptions,
117
- ...(transport ? { transport } : {}),
118
- });
119
- this.isExternal = true;
120
- this.setLevel(this.resolveEffectiveLevel(this.logger, level));
121
- return;
122
- }
123
- // CASE 6: логгер без .child — используем напрямую, только применим level
124
- this.logger = externalLogger;
125
- this.isExternal = true;
126
- if (typeof externalLogger.level === 'string') {
127
- externalLogger.level = this.resolveEffectiveLevel(this.logger, level);
128
- }
129
- this.setLevel(this.resolveEffectiveLevel(this.logger, level));
130
- }
131
- /**
132
- * Updates the logging methods based on the current logging level and external logger configuration.
133
- *
134
- * Iterates over the available logging levels and sets the corresponding logging method to either call the external log method or the internal pretty format log method, depending on the logger configuration.
135
- *
136
- * @return {void}
137
- */
138
- updateLoggingMethods() {
139
- const levels = Object.values(LoggerLevels);
140
- levels.forEach((level, index) => {
141
- if (this.enabled && this.currentLevelIndex <= index) {
142
- this[level] = (...args) => {
143
- if (this.isExternal) {
144
- this.callExternalLogMethod(level, args);
145
- }
146
- else {
147
- this.prettyFormatLog(level, args);
148
- }
149
- };
150
- }
151
- else {
152
- this[level] = SimpleLogger.noop;
153
- }
154
- });
155
- }
156
- /**
157
- * Calls the external log method for the specified level with the provided arguments.
158
- *
159
- * @param {LoggerLevel} level - The logging level to use for the external log method.
160
- * @param {unknown[]} args - The arguments to pass to the external log method.
161
- * @return {void}
162
- */
163
- callExternalLogMethod(level, args) {
164
- const method = this.logger[level];
165
- if (typeof method !== 'function')
166
- return;
167
- const prepared = prepareLogCall(args);
168
- if (prepared !== null) {
169
- method(...prepared);
170
- }
171
- else {
172
- console.warn(`Invalid log arguments for "${level}"`, args);
173
- }
174
- }
175
- /**
176
- * Formats and logs a message with the specified level and arguments.
177
- *
178
- * @param {LoggerLevel} level - The logging level to use for the log message.
179
- * @param {unknown[]} args - The arguments to use when formatting the log message.
180
- * @return {void}
181
- */
182
- prettyFormatLog(level, args) {
183
- const time = new Date().toISOString().slice(0, 19).replace('T', ' ');
184
- const levelStr = colorizeLevel(level, level.toUpperCase().padEnd(5));
185
- const context = extractContext(args);
186
- const { msg, rest } = extractMessage(args);
187
- const fullMsg = util.format(msg, ...rest);
188
- const ctx = Object.entries({ ...this.bindings, ...context })
189
- .map(([k, v]) => `${k}=${v}`)
190
- .join(' ');
191
- const prefix = `[${time}] ${levelStr}`;
192
- const contextStr = ctx ? ` (${ctx})` : '';
193
- const msgPrefixStr = this.msgPrefix ? ` ${this.msgPrefix}` : '';
194
- console.log(`${prefix}${contextStr}:${msgPrefixStr} ${fullMsg}`);
195
- }
196
- /**
197
- * Retrieves the current logging level.
198
- *
199
- * @return {LoggerLevel} The current logging level.
200
- */
201
- getLevel() {
202
- return Object.values(LoggerLevels)[this.currentLevelIndex];
203
- }
204
- /**
205
- * Sets the logging level.
206
- *
207
- * @param {LoggerLevel} level - The logging level to set.
208
- * @return {void}
209
- */
210
- setLevel(level) {
211
- const index = Object.values(LoggerLevels).indexOf(level);
212
- if (index !== -1) {
213
- this.currentLevelIndex = index;
214
- if (typeof this.logger.level === 'string') {
215
- this.logger.level = level;
216
- }
217
- this.updateLoggingMethods();
218
- }
219
- }
220
- /**
221
- * Enables the logger.
222
- *
223
- * @return {void}
224
- */
225
- enable() {
226
- this.enabled = true;
227
- this.updateLoggingMethods();
228
- }
229
- /**
230
- * Disables the logger.
231
- *
232
- * @return {void} Nothing is returned.
233
- */
234
- disable() {
235
- this.enabled = false;
236
- this.updateLoggingMethods();
237
- }
238
- /**
239
- * Creates a new child logger with the merged bindings.
240
- *
241
- * If the external logger supports the `child` method, it will be used to create the child logger.
242
- * Otherwise, a new SimpleLogger instance will be created with the merged bindings.
243
- *
244
- * @param {Record<string, unknown>} newBindings - The new bindings to merge with the existing bindings.
245
- * @return {SimpleLogger} The new child logger instance.
246
- */
247
- child(newBindings) {
248
- const merged = { ...this.bindings, ...newBindings };
249
- if (this.isExternal &&
250
- typeof this.logger === 'object' &&
251
- this.logger !== null) {
252
- const logger = this.logger;
253
- const childFn = logger.child;
254
- if (typeof childFn === 'function') {
255
- const childLogger = childFn.call(logger, merged);
256
- return new SimpleLogger(childLogger, {
257
- level: this.getLevel(),
258
- bindings: merged,
259
- msgPrefix: this.msgPrefix,
260
- });
261
- }
262
- }
263
- return new SimpleLogger(this.logger, {
264
- level: this.getLevel(),
265
- bindings: merged,
266
- msgPrefix: this.msgPrefix,
267
- });
268
- }
269
- /**
270
- * Logs the start of a function.
271
- *
272
- * @param {string} name - Optional function name to log. If not provided, the caller function name will be used.
273
- * @return {void}
274
- */
275
- logFunctionStart(name) {
276
- const caller = name || getCallerName();
277
- this.trace(`Function start: ${caller}`);
278
- }
279
- /**
280
- * Logs the end of a function.
281
- *
282
- * @param {string} name - Optional function name to log. If not provided, the caller function name will be used.
283
- * @return {void}
284
- */
285
- logFunctionEnd(name) {
286
- const caller = name || getCallerName();
287
- this.trace(`Function end: ${caller}`);
288
- }
289
- }
1
+ /**
2
+ * A module for simple logging with various logging levels.
3
+ * @module SimpleLogger
4
+ */
5
+ import util from 'util';
6
+ import { getCallerName } from 'vvlad1973-utils';
7
+ import { hasChild, isValidLogger } from '../helpers/validators.js';
8
+ import { extractContext, extractMessage, colorizeLevel, prepareLogCall, } from '../helpers/helpers.js';
9
+ import { LoggerLevels } from '../constants/constants.js';
10
+ export default class SimpleLogger {
11
+ currentLevelIndex = Object.values(LoggerLevels).indexOf(LoggerLevels.INFO);
12
+ logger = console;
13
+ bindings = {};
14
+ msgPrefix;
15
+ enabled = true;
16
+ isExternal = false;
17
+ static noop = () => { };
18
+ trace = SimpleLogger.noop;
19
+ debug = SimpleLogger.noop;
20
+ info = SimpleLogger.noop;
21
+ warn = SimpleLogger.noop;
22
+ error = SimpleLogger.noop;
23
+ fatal = SimpleLogger.noop;
24
+ silent = SimpleLogger.noop;
25
+ /**
26
+ * Initializes a new instance of the SimpleLogger class.
27
+ *
28
+ * @param {ExternalLogger | LoggerFactory | null} externalLogger - The external logger to use, or null to use the console.
29
+ * @param {LoggerOptions} [options={}] - Options for the logger, such as the logging level and bindings.
30
+ */
31
+ constructor(externalLogger, options = {}) {
32
+ this.initLogger(externalLogger, options);
33
+ }
34
+ /**
35
+ * Resolves the effective logging level based on the provided logger and explicit level.
36
+ *
37
+ * @param {ExternalLogger | Console} logger - The logger to resolve the level for.
38
+ * @param {LoggerLevel} [explicitLevel] - The explicit logging level to use, if provided.
39
+ * @return {LoggerLevel} The resolved effective logging level.
40
+ */
41
+ resolveEffectiveLevel(logger, explicitLevel) {
42
+ const levels = Object.values(LoggerLevels);
43
+ if (explicitLevel)
44
+ return explicitLevel;
45
+ if (logger &&
46
+ typeof logger === 'object' &&
47
+ 'level' in logger &&
48
+ typeof logger.level === 'string') {
49
+ const lvl = logger.level.toLowerCase();
50
+ if (levels.includes(lvl))
51
+ return lvl;
52
+ }
53
+ return levels[this.currentLevelIndex];
54
+ }
55
+ /**
56
+ * Initializes the logger with the provided external logger and options.
57
+ *
58
+ * Handles different cases for the external logger, including:
59
+ * - No external logger provided (falls back to console)
60
+ * - External logger is a factory function (e.g. pino)
61
+ * - External logger is invalid or console (falls back to console)
62
+ * - External logger is provided without parameters
63
+ * - External logger has a .child() method
64
+ * - External logger does not have a .child() method (uses directly)
65
+ *
66
+ * @param {ExternalLogger | LoggerFactory | null} externalLogger - The external logger to use, or null to use the console.
67
+ * @param {LoggerOptions} options - Options for the logger, such as the logging level and bindings.
68
+ * @return {void}
69
+ */
70
+ initLogger(externalLogger, options = {}) {
71
+ const { level, bindings = {}, msgPrefix, transport, ...restOptions } = options;
72
+ const hasParams = level ||
73
+ msgPrefix ||
74
+ transport ||
75
+ Object.keys(bindings).length > 0 ||
76
+ Object.keys(restOptions).length > 0;
77
+ const effectiveBindings = {
78
+ ...bindings,
79
+ };
80
+ this.bindings = effectiveBindings;
81
+ this.msgPrefix = msgPrefix;
82
+ // CASE 1: логгер не передан
83
+ if (!externalLogger) {
84
+ this.logger = console;
85
+ this.isExternal = false;
86
+ this.setLevel(this.resolveEffectiveLevel(this.logger, level));
87
+ return;
88
+ }
89
+ // CASE 2: логгер — фабрика (например, pino)
90
+ if (typeof externalLogger === 'function') {
91
+ this.logger = externalLogger({
92
+ level,
93
+ ...restOptions,
94
+ ...(transport ? { transport } : {}),
95
+ ...(msgPrefix ? { msgPrefix } : {}),
96
+ });
97
+ this.isExternal = true;
98
+ this.setLevel(this.resolveEffectiveLevel(this.logger, level));
99
+ return;
100
+ }
101
+ // CASE 3: логгер есть, но он невалиден (нет методов)
102
+ if (!isValidLogger(externalLogger) || externalLogger === console) {
103
+ console.warn('Invalid or console logger passed, falling back to internal console.');
104
+ this.logger = console;
105
+ this.isExternal = false;
106
+ this.setLevel(this.resolveEffectiveLevel(this.logger, level));
107
+ return;
108
+ }
109
+ // CASE 4: логгер передан без параметров
110
+ if (!hasParams) {
111
+ this.logger = externalLogger;
112
+ this.isExternal = true;
113
+ this.setLevel(this.resolveEffectiveLevel(this.logger, level));
114
+ return;
115
+ }
116
+ // CASE 5: логгер с .child()
117
+ if (hasChild(externalLogger)) {
118
+ const childOptions = {
119
+ ...(level ? { level } : {}),
120
+ ...restOptions,
121
+ ...(transport ? { transport } : {}),
122
+ ...(msgPrefix ? { msgPrefix } : {}),
123
+ };
124
+ // Pass transports/options separately so pino treats them as logger options, not bindings
125
+ this.logger = externalLogger.child(effectiveBindings, Object.keys(childOptions).length > 0 ? childOptions : undefined);
126
+ this.isExternal = true;
127
+ this.setLevel(this.resolveEffectiveLevel(this.logger, level));
128
+ return;
129
+ }
130
+ // CASE 6: логгер без .child — используем напрямую, только применим level
131
+ this.logger = externalLogger;
132
+ this.isExternal = true;
133
+ if (typeof externalLogger.level === 'string') {
134
+ externalLogger.level = this.resolveEffectiveLevel(this.logger, level);
135
+ }
136
+ this.setLevel(this.resolveEffectiveLevel(this.logger, level));
137
+ }
138
+ /**
139
+ * Updates the logging methods based on the current logging level and external logger configuration.
140
+ *
141
+ * Iterates over the available logging levels and sets the corresponding logging method to either call the external log method or the internal pretty format log method, depending on the logger configuration.
142
+ *
143
+ * @return {void}
144
+ */
145
+ updateLoggingMethods() {
146
+ const levels = Object.values(LoggerLevels);
147
+ levels.forEach((level, index) => {
148
+ if (this.enabled && this.currentLevelIndex <= index) {
149
+ this[level] = (...args) => {
150
+ if (this.isExternal) {
151
+ this.callExternalLogMethod(level, args);
152
+ }
153
+ else {
154
+ this.prettyFormatLog(level, args);
155
+ }
156
+ };
157
+ }
158
+ else {
159
+ this[level] = SimpleLogger.noop;
160
+ }
161
+ });
162
+ }
163
+ /**
164
+ * Calls the external log method for the specified level with the provided arguments.
165
+ *
166
+ * @param {LoggerLevel} level - The logging level to use for the external log method.
167
+ * @param {unknown[]} args - The arguments to pass to the external log method.
168
+ * @return {void}
169
+ */
170
+ callExternalLogMethod(level, args) {
171
+ const method = this.logger[level];
172
+ if (typeof method !== 'function')
173
+ return;
174
+ const prepared = prepareLogCall(args);
175
+ if (prepared !== null) {
176
+ method.apply(this.logger, prepared);
177
+ }
178
+ else {
179
+ console.warn(`Invalid log arguments for "${level}"`, args);
180
+ }
181
+ }
182
+ /**
183
+ * Formats and logs a message with the specified level and arguments.
184
+ *
185
+ * @param {LoggerLevel} level - The logging level to use for the log message.
186
+ * @param {unknown[]} args - The arguments to use when formatting the log message.
187
+ * @return {void}
188
+ */
189
+ prettyFormatLog(level, args) {
190
+ const time = new Date().toISOString().slice(0, 19).replace('T', ' ');
191
+ const levelStr = colorizeLevel(level, level.toUpperCase().padEnd(5));
192
+ const context = extractContext(args);
193
+ const { msg, rest } = extractMessage(args);
194
+ const fullMsg = util.format(msg, ...rest);
195
+ const ctx = Object.entries({ ...this.bindings, ...context })
196
+ .map(([k, v]) => `${k}=${v}`)
197
+ .join(' ');
198
+ const prefix = `[${time}] ${levelStr}`;
199
+ const contextStr = ctx ? ` (${ctx})` : '';
200
+ const msgPrefixStr = this.msgPrefix ? ` ${this.msgPrefix}` : '';
201
+ console.log(`${prefix}${contextStr}:${msgPrefixStr} ${fullMsg}`);
202
+ }
203
+ /**
204
+ * Retrieves the current logging level.
205
+ *
206
+ * @return {LoggerLevel} The current logging level.
207
+ */
208
+ getLevel() {
209
+ return Object.values(LoggerLevels)[this.currentLevelIndex];
210
+ }
211
+ /**
212
+ * Sets the logging level.
213
+ *
214
+ * @param {LoggerLevel} level - The logging level to set.
215
+ * @return {void}
216
+ */
217
+ setLevel(level) {
218
+ const index = Object.values(LoggerLevels).indexOf(level);
219
+ if (index !== -1) {
220
+ this.currentLevelIndex = index;
221
+ if (typeof this.logger.level === 'string') {
222
+ this.logger.level = level;
223
+ }
224
+ this.updateLoggingMethods();
225
+ }
226
+ }
227
+ /**
228
+ * Enables the logger.
229
+ *
230
+ * @return {void}
231
+ */
232
+ enable() {
233
+ this.enabled = true;
234
+ this.updateLoggingMethods();
235
+ }
236
+ /**
237
+ * Disables the logger.
238
+ *
239
+ * @return {void} Nothing is returned.
240
+ */
241
+ disable() {
242
+ this.enabled = false;
243
+ this.updateLoggingMethods();
244
+ }
245
+ /**
246
+ * Creates a new child logger with the merged bindings.
247
+ *
248
+ * If the external logger supports the `child` method, it will be used to create the child logger.
249
+ * Otherwise, a new SimpleLogger instance will be created with the merged bindings.
250
+ *
251
+ * @param {Record<string, unknown>} newBindings - The new bindings to merge with the existing bindings.
252
+ * @return {SimpleLogger} The new child logger instance.
253
+ */
254
+ child(newBindings) {
255
+ const merged = { ...this.bindings, ...newBindings };
256
+ if (this.isExternal &&
257
+ typeof this.logger === 'object' &&
258
+ this.logger !== null) {
259
+ const logger = this.logger;
260
+ const childFn = logger.child;
261
+ if (typeof childFn === 'function') {
262
+ const childLogger = childFn.call(logger, merged);
263
+ return new SimpleLogger(childLogger, {
264
+ level: this.getLevel(),
265
+ bindings: merged,
266
+ });
267
+ }
268
+ }
269
+ return new SimpleLogger(this.logger, {
270
+ level: this.getLevel(),
271
+ bindings: merged,
272
+ });
273
+ }
274
+ /**
275
+ * Logs the start of a function.
276
+ *
277
+ * @param {string} name - Optional function name to log. If not provided, the caller function name will be used.
278
+ * @return {void}
279
+ */
280
+ logFunctionStart(name) {
281
+ const caller = name || getCallerName();
282
+ this.trace(`Function start: ${caller}`);
283
+ }
284
+ /**
285
+ * Logs the end of a function.
286
+ *
287
+ * @param {string} name - Optional function name to log. If not provided, the caller function name will be used.
288
+ * @return {void}
289
+ */
290
+ logFunctionEnd(name) {
291
+ const caller = name || getCallerName();
292
+ this.trace(`Function end: ${caller}`);
293
+ }
294
+ }
290
295
  //# sourceMappingURL=simple-logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"simple-logger.js","sourceRoot":"","sources":["../../src/classes/simple-logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simple-logger.js","sourceRoot":"","sources":["../../src/classes/simple-logger.ts"],"names":[],"mappings":"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"}