@vvlad1973/simple-logger 2.1.10 → 2.2.1

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,66 +1,395 @@
1
- import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
1
  import SimpleLogger from '../classes/simple-logger.js';
3
2
  describe('SimpleLogger', () => {
4
3
  let consoleSpy;
4
+ let consoleWarnSpy;
5
5
  beforeEach(() => {
6
6
  consoleSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
7
+ consoleWarnSpy = vi.spyOn(console, 'warn').mockImplementation(() => { });
7
8
  });
8
9
  afterEach(() => {
9
10
  consoleSpy.mockRestore();
11
+ consoleWarnSpy.mockRestore();
10
12
  });
11
- it('should log using console when no external logger is provided', () => {
12
- const logger = new SimpleLogger();
13
- logger.info('test message');
14
- expect(consoleSpy).toHaveBeenCalledOnce();
15
- expect(consoleSpy.mock.calls[0][0]).toMatch(/test message/);
13
+ describe('Initialization Cases', () => {
14
+ it('CASE 1: should use console when no external logger is provided', () => {
15
+ const logger = new SimpleLogger();
16
+ expect(logger.isExternal).toBe(false);
17
+ logger.info('test message');
18
+ expect(consoleSpy).toHaveBeenCalledOnce();
19
+ expect(consoleSpy.mock.calls[0][0]).toMatch(/test message/);
20
+ });
21
+ it('CASE 2: should call logger factory with options', () => {
22
+ const mockLogger = {
23
+ info: vi.fn(),
24
+ level: 'info',
25
+ };
26
+ const factory = vi.fn(() => mockLogger);
27
+ const logger = new SimpleLogger(factory, { level: 'debug', msgPrefix: 'TEST' });
28
+ expect(factory).toHaveBeenCalledWith({
29
+ level: 'debug',
30
+ msgPrefix: 'TEST',
31
+ });
32
+ expect(logger.isExternal).toBe(true);
33
+ });
34
+ it('CASE 3: should fallback to console for invalid external logger', () => {
35
+ const logger = new SimpleLogger({});
36
+ expect(logger.isExternal).toBe(false);
37
+ expect(consoleWarnSpy).toHaveBeenCalledWith('Invalid or console logger passed, falling back to internal console.');
38
+ });
39
+ it('CASE 3b: should fallback to console when console is passed', () => {
40
+ const logger = new SimpleLogger(console);
41
+ expect(logger.isExternal).toBe(false);
42
+ });
43
+ it('CASE 4: should use external logger without params', () => {
44
+ const external = {
45
+ info: vi.fn(),
46
+ warn: vi.fn(),
47
+ level: 'info',
48
+ };
49
+ const logger = new SimpleLogger(external);
50
+ expect(logger.isExternal).toBe(true);
51
+ logger.info('test');
52
+ expect(external.info).toHaveBeenCalledWith('test');
53
+ });
54
+ it('CASE 5: should create child logger when external has .child() method', () => {
55
+ const childLogger = {
56
+ info: vi.fn(),
57
+ level: 'info',
58
+ };
59
+ const childFn = vi.fn(() => childLogger);
60
+ const external = {
61
+ info: vi.fn(),
62
+ level: 'info',
63
+ child: childFn,
64
+ };
65
+ const logger = new SimpleLogger(external, {
66
+ level: 'debug',
67
+ bindings: { app: 'test' },
68
+ msgPrefix: 'PREFIX',
69
+ });
70
+ expect(childFn).toHaveBeenCalledWith({ app: 'test' }, { level: 'debug', msgPrefix: 'PREFIX' });
71
+ expect(logger.isExternal).toBe(true);
72
+ });
73
+ it('CASE 6: should use external logger directly without .child() and set level', () => {
74
+ const external = {
75
+ info: vi.fn(),
76
+ level: 'info',
77
+ };
78
+ const logger = new SimpleLogger(external, { level: 'debug' });
79
+ expect(external.level).toBe('debug');
80
+ expect(logger.isExternal).toBe(true);
81
+ });
16
82
  });
17
- it('should not log below current level', () => {
18
- const logger = new SimpleLogger(null, { level: 'warn' });
19
- logger.info('should not log');
20
- logger.warn('should log');
21
- expect(consoleSpy).toHaveBeenCalledOnce();
22
- expect(consoleSpy.mock.calls[0][0]).toMatch(/should log/);
83
+ describe('Logging Methods', () => {
84
+ it('should log at all levels', () => {
85
+ const logger = new SimpleLogger(null, { level: 'trace' });
86
+ logger.trace('trace msg');
87
+ logger.debug('debug msg');
88
+ logger.info('info msg');
89
+ logger.warn('warn msg');
90
+ logger.error('error msg');
91
+ logger.fatal('fatal msg');
92
+ expect(consoleSpy).toHaveBeenCalledTimes(6);
93
+ });
94
+ it('should not log below current level', () => {
95
+ const logger = new SimpleLogger(null, { level: 'warn' });
96
+ logger.trace('should not log');
97
+ logger.debug('should not log');
98
+ logger.info('should not log');
99
+ logger.warn('should log');
100
+ logger.error('should log');
101
+ expect(consoleSpy).toHaveBeenCalledTimes(2);
102
+ });
103
+ it('should respect msgPrefix in console output', () => {
104
+ const logger = new SimpleLogger(null, { msgPrefix: '[PREFIX]' });
105
+ logger.info('message');
106
+ expect(consoleSpy.mock.calls[0][0]).toMatch(/\[PREFIX\]/);
107
+ });
108
+ it('should include bindings in console output', () => {
109
+ const logger = new SimpleLogger(null, { bindings: { user: 'john', id: 123 } });
110
+ logger.info('message');
111
+ const output = consoleSpy.mock.calls[0][0];
112
+ expect(output).toMatch(/user=john/);
113
+ expect(output).toMatch(/id=123/);
114
+ });
115
+ it('should handle object context with message', () => {
116
+ const logger = new SimpleLogger();
117
+ logger.info({ userId: 123 }, 'user action');
118
+ const output = consoleSpy.mock.calls[0][0];
119
+ expect(output).toMatch(/userId=123/);
120
+ expect(output).toMatch(/user action/);
121
+ });
122
+ it('should handle message with format arguments', () => {
123
+ const logger = new SimpleLogger();
124
+ logger.info('Hello %s, you are %d years old', 'John', 30);
125
+ const output = consoleSpy.mock.calls[0][0];
126
+ expect(output).toMatch(/Hello John, you are 30 years old/);
127
+ });
128
+ it('should handle object-only logging', () => {
129
+ const logger = new SimpleLogger();
130
+ logger.info({ status: 'ok' });
131
+ expect(consoleSpy).toHaveBeenCalled();
132
+ });
23
133
  });
24
- it('should respect msgPrefix', () => {
25
- const logger = new SimpleLogger(null, { msgPrefix: '[PREFIX]' });
26
- logger.info('message');
27
- expect(consoleSpy.mock.calls[0][0]).toMatch(/\[PREFIX\]/);
134
+ describe('External Logger Integration', () => {
135
+ it('should call external logger with string message', () => {
136
+ const external = {
137
+ info: vi.fn(),
138
+ level: 'info',
139
+ };
140
+ const logger = new SimpleLogger(external);
141
+ logger.info('test message');
142
+ expect(external.info).toHaveBeenCalledWith('test message');
143
+ });
144
+ it('should call external logger with object and message', () => {
145
+ const external = {
146
+ info: vi.fn(),
147
+ level: 'info',
148
+ };
149
+ const logger = new SimpleLogger(external);
150
+ logger.info({ userId: 123 }, 'user action');
151
+ expect(external.info).toHaveBeenCalledWith({ userId: 123 }, 'user action');
152
+ });
153
+ it('should call external logger with object only', () => {
154
+ const external = {
155
+ info: vi.fn(),
156
+ level: 'info',
157
+ };
158
+ const logger = new SimpleLogger(external);
159
+ logger.info({ status: 'ok' });
160
+ expect(external.info).toHaveBeenCalledWith({ status: 'ok' }, undefined);
161
+ });
162
+ it('should call external logger with message and format args', () => {
163
+ const external = {
164
+ info: vi.fn(),
165
+ level: 'info',
166
+ };
167
+ const logger = new SimpleLogger(external);
168
+ logger.info('Hello %s', 'world');
169
+ expect(external.info).toHaveBeenCalledWith('Hello %s', 'world');
170
+ });
171
+ it('should skip logging if method does not exist on external logger', () => {
172
+ const external = {
173
+ info: vi.fn(),
174
+ level: 'info',
175
+ };
176
+ const logger = new SimpleLogger(external);
177
+ logger.debug('should not call');
178
+ expect(external.info).not.toHaveBeenCalled();
179
+ });
180
+ it('should warn on invalid log arguments', () => {
181
+ const external = {
182
+ info: vi.fn(),
183
+ level: 'info',
184
+ };
185
+ const logger = new SimpleLogger(external);
186
+ // Simulate invalid prepared args by calling with invalid types
187
+ logger.callExternalLogMethod('info', [undefined]);
188
+ expect(consoleWarnSpy).toHaveBeenCalled();
189
+ });
28
190
  });
29
- it('should use external logger methods if provided', () => {
30
- const external = {
31
- info: vi.fn(),
32
- level: 'info',
33
- };
34
- const logger = new SimpleLogger(external);
35
- logger.info('external log');
36
- expect(external.info).toHaveBeenCalledOnce();
37
- expect(external.info).toHaveBeenCalledWith('external log');
191
+ describe('Level Management', () => {
192
+ it('should get current level', () => {
193
+ const logger = new SimpleLogger(null, { level: 'warn' });
194
+ expect(logger.getLevel()).toBe('warn');
195
+ });
196
+ it('should set new level', () => {
197
+ const logger = new SimpleLogger(null, { level: 'info' });
198
+ expect(logger.getLevel()).toBe('info');
199
+ logger.setLevel('error');
200
+ expect(logger.getLevel()).toBe('error');
201
+ logger.info('should not log');
202
+ logger.error('should log');
203
+ expect(consoleSpy).toHaveBeenCalledOnce();
204
+ });
205
+ it('should sync level with external logger', () => {
206
+ const external = {
207
+ info: vi.fn(),
208
+ level: 'info',
209
+ };
210
+ const logger = new SimpleLogger(external);
211
+ logger.setLevel('debug');
212
+ expect(external.level).toBe('debug');
213
+ });
214
+ it('should resolve level from external logger', () => {
215
+ const external = {
216
+ info: vi.fn(),
217
+ level: 'warn',
218
+ };
219
+ const logger = new SimpleLogger(external);
220
+ expect(logger.getLevel()).toBe('warn');
221
+ });
222
+ it('should prioritize explicit level over logger level', () => {
223
+ const external = {
224
+ info: vi.fn(),
225
+ level: 'warn',
226
+ };
227
+ const logger = new SimpleLogger(external, { level: 'debug' });
228
+ expect(logger.getLevel()).toBe('debug');
229
+ });
230
+ it('should ignore invalid level in external logger', () => {
231
+ const external = {
232
+ info: vi.fn(),
233
+ level: 'invalid_level',
234
+ };
235
+ const logger = new SimpleLogger(external);
236
+ // Should fall back to default level
237
+ expect(logger.getLevel()).toBe('info');
238
+ });
38
239
  });
39
- it('should fallback to console for invalid external logger', () => {
40
- const logger = new SimpleLogger({});
41
- logger.info('fallback');
42
- expect(consoleSpy).toHaveBeenCalled();
240
+ describe('Enable/Disable', () => {
241
+ it('should disable all logging when disabled', () => {
242
+ const logger = new SimpleLogger(null, { level: 'trace' });
243
+ logger.disable();
244
+ logger.trace('should not log');
245
+ logger.info('should not log');
246
+ logger.error('should not log');
247
+ expect(consoleSpy).not.toHaveBeenCalled();
248
+ });
249
+ it('should enable logging when re-enabled', () => {
250
+ const logger = new SimpleLogger(null, { level: 'info' });
251
+ logger.disable();
252
+ logger.info('should not log');
253
+ logger.enable();
254
+ logger.info('should log');
255
+ expect(consoleSpy).toHaveBeenCalledOnce();
256
+ });
43
257
  });
44
- it('should create child logger with merged bindings', () => {
45
- const logger = new SimpleLogger(null, { bindings: { user: 'A' } });
46
- const child = logger.child({ request: '123' });
47
- child.info('child message');
48
- expect(consoleSpy.mock.calls.length).toBe(1);
49
- const output = consoleSpy.mock.calls[0][0];
50
- expect(output).toMatch(/user=A/);
51
- expect(output).toMatch(/request=123/);
52
- expect(output).toMatch(/child message/);
258
+ describe('Child Logger', () => {
259
+ it('should create child logger with merged bindings', () => {
260
+ const logger = new SimpleLogger(null, { bindings: { user: 'A' } });
261
+ const child = logger.child({ request: '123' });
262
+ child.info('child message');
263
+ const output = consoleSpy.mock.calls[0][0];
264
+ expect(output).toMatch(/user=A/);
265
+ expect(output).toMatch(/request=123/);
266
+ expect(output).toMatch(/child message/);
267
+ });
268
+ it('should call external logger .child() method if available', () => {
269
+ const childLogger = {
270
+ info: vi.fn(),
271
+ level: 'info',
272
+ };
273
+ const childFn = vi.fn(() => childLogger);
274
+ const external = {
275
+ level: 'info',
276
+ child: childFn,
277
+ info: vi.fn(),
278
+ };
279
+ const logger = new SimpleLogger(external);
280
+ const child = logger.child({ traceId: 'xyz' });
281
+ child.info('from child');
282
+ expect(childFn).toHaveBeenCalledWith({ traceId: 'xyz' });
283
+ expect(childLogger.info).toHaveBeenCalledWith('from child');
284
+ });
285
+ it('should create child without calling external .child() if not function', () => {
286
+ const external = {
287
+ info: vi.fn(),
288
+ level: 'info',
289
+ };
290
+ const logger = new SimpleLogger(external);
291
+ const child = logger.child({ req: '456' });
292
+ expect(child).toBeInstanceOf(SimpleLogger);
293
+ });
53
294
  });
54
- it('should call .child if external logger supports it', () => {
55
- const childFn = vi.fn(() => ({
56
- info: vi.fn(),
57
- level: 'info',
58
- }));
59
- const external = { level: 'info', child: childFn, info: vi.fn() };
60
- const logger = new SimpleLogger(external);
61
- const child = logger.child({ traceId: 'xyz' });
62
- child.info('from child');
63
- expect(childFn).toHaveBeenCalledWith({ traceId: 'xyz' });
295
+ describe('Function Logging', () => {
296
+ it('should log function start', () => {
297
+ const logger = new SimpleLogger(null, { level: 'trace' });
298
+ logger.logFunctionStart('myFunction');
299
+ expect(consoleSpy).toHaveBeenCalled();
300
+ expect(consoleSpy.mock.calls[0][0]).toMatch(/Function start: myFunction/);
301
+ });
302
+ it('should log function end', () => {
303
+ const logger = new SimpleLogger(null, { level: 'trace' });
304
+ logger.logFunctionEnd('myFunction');
305
+ expect(consoleSpy).toHaveBeenCalled();
306
+ expect(consoleSpy.mock.calls[0][0]).toMatch(/Function end: myFunction/);
307
+ });
308
+ it('should use caller name if not provided', () => {
309
+ const logger = new SimpleLogger(null, { level: 'trace' });
310
+ logger.logFunctionStart();
311
+ logger.logFunctionEnd();
312
+ expect(consoleSpy).toHaveBeenCalledTimes(2);
313
+ });
314
+ });
315
+ describe('Flush Method', () => {
316
+ it('should return immediately if not external logger', async () => {
317
+ const logger = new SimpleLogger();
318
+ await expect(logger.flush()).resolves.toBeUndefined();
319
+ });
320
+ it('should call flush on external logger if available', async () => {
321
+ const flushFn = vi.fn((cb) => cb());
322
+ const external = {
323
+ info: vi.fn(),
324
+ level: 'info',
325
+ flush: flushFn,
326
+ };
327
+ const logger = new SimpleLogger(external);
328
+ await logger.flush();
329
+ expect(flushFn).toHaveBeenCalled();
330
+ });
331
+ it('should handle flush errors gracefully', async () => {
332
+ const flushFn = vi.fn((cb) => cb(new Error('Flush error')));
333
+ const external = {
334
+ info: vi.fn(),
335
+ level: 'info',
336
+ flush: flushFn,
337
+ };
338
+ const logger = new SimpleLogger(external);
339
+ await expect(logger.flush()).resolves.toBeUndefined();
340
+ });
341
+ it('should return immediately if flush is not a function', async () => {
342
+ const external = {
343
+ info: vi.fn(),
344
+ level: 'info',
345
+ };
346
+ const logger = new SimpleLogger(external);
347
+ await expect(logger.flush()).resolves.toBeUndefined();
348
+ });
349
+ });
350
+ describe('Silent Level', () => {
351
+ it('should not log anything at silent level', () => {
352
+ const logger = new SimpleLogger(null, { level: 'silent' });
353
+ logger.trace('should not log');
354
+ logger.debug('should not log');
355
+ logger.info('should not log');
356
+ logger.warn('should not log');
357
+ logger.error('should not log');
358
+ logger.fatal('should not log');
359
+ expect(consoleSpy).not.toHaveBeenCalled();
360
+ });
361
+ });
362
+ describe('Level Resolution', () => {
363
+ it('should handle logger without level property', () => {
364
+ const external = {
365
+ info: vi.fn(),
366
+ };
367
+ const logger = new SimpleLogger(external);
368
+ expect(logger.getLevel()).toBe('info');
369
+ });
370
+ it('should not update level on external logger without level property', () => {
371
+ const external = {
372
+ info: vi.fn(),
373
+ };
374
+ const logger = new SimpleLogger(external);
375
+ logger.setLevel('debug');
376
+ expect(external.level).toBeUndefined();
377
+ });
378
+ });
379
+ describe('Factory with Transport', () => {
380
+ it('should pass transport option to factory', () => {
381
+ const mockLogger = {
382
+ info: vi.fn(),
383
+ level: 'info',
384
+ };
385
+ const factory = vi.fn(() => mockLogger);
386
+ const transport = { target: 'pino/file' };
387
+ new SimpleLogger(factory, { level: 'info', transport });
388
+ expect(factory).toHaveBeenCalledWith({
389
+ level: 'info',
390
+ transport,
391
+ });
392
+ });
64
393
  });
65
394
  });
66
395
  //# sourceMappingURL=simple-logger.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"simple-logger.test.js","sourceRoot":"","sources":["../../src/__test__/simple-logger.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"simple-logger.test.js","sourceRoot":"","sources":["../../src/__test__/simple-logger.test.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * A module for simple logging with various logging levels.
3
3
  * @module SimpleLogger
4
4
  */
5
- import { type ExternalLogger, type LogFn, type LoggerFactory, type LoggerLevel, type LoggerOptions } from '../types/simple-logger.types.js';
5
+ import type { ExternalLogger, LogFn, LoggerFactory, LoggerLevel, LoggerOptions } from '../types/simple-logger.types.js';
6
6
  export default class SimpleLogger {
7
7
  private currentLevelIndex;
8
8
  private logger;
@@ -122,4 +122,11 @@ export default class SimpleLogger {
122
122
  * @return {void}
123
123
  */
124
124
  logFunctionEnd(name?: string): void;
125
+ /**
126
+ * Flushes the logger buffer if the external logger supports it.
127
+ * This is useful for ensuring all buffered log entries are written before the application exits.
128
+ *
129
+ * @return {Promise<void>} A promise that resolves when the flush is complete.
130
+ */
131
+ flush(): Promise<void>;
125
132
  }
@@ -42,12 +42,11 @@ export default class SimpleLogger {
42
42
  const levels = Object.values(LoggerLevels);
43
43
  if (explicitLevel)
44
44
  return explicitLevel;
45
- if (logger &&
46
- typeof logger === 'object' &&
47
- 'level' in logger &&
45
+ if ('level' in logger &&
48
46
  typeof logger.level === 'string') {
49
47
  const lvl = logger.level.toLowerCase();
50
- if (levels.includes(lvl))
48
+ const isValidLevel = (value) => levels.includes(value);
49
+ if (isValidLevel(lvl))
51
50
  return lvl;
52
51
  }
53
52
  return levels[this.currentLevelIndex];
@@ -69,9 +68,9 @@ export default class SimpleLogger {
69
68
  */
70
69
  initLogger(externalLogger, options = {}) {
71
70
  const { level, bindings = {}, msgPrefix, transport, ...restOptions } = options;
72
- const hasParams = level ||
73
- msgPrefix ||
74
- transport ||
71
+ const hasParams = level !== undefined ||
72
+ msgPrefix !== undefined ||
73
+ transport !== undefined ||
75
74
  Object.keys(bindings).length > 0 ||
76
75
  Object.keys(restOptions).length > 0;
77
76
  const effectiveBindings = {
@@ -173,7 +172,23 @@ export default class SimpleLogger {
173
172
  return;
174
173
  const prepared = prepareLogCall(args);
175
174
  if (prepared !== null) {
176
- method.apply(this.logger, prepared);
175
+ const [first, ...rest] = prepared;
176
+ if (typeof first === 'string') {
177
+ // Call with string message signature: (msg: string, ...args: unknown[])
178
+ method.call(this.logger, first, ...rest);
179
+ }
180
+ else if (typeof first === 'object') {
181
+ // Call with object signature: (obj: object, msg?: string, ...args: unknown[])
182
+ const [second, ...otherRest] = rest;
183
+ if (typeof second === 'string') {
184
+ // Call with both object and message
185
+ method.call(this.logger, first, second, ...otherRest);
186
+ }
187
+ else {
188
+ // Call with object only (msg is undefined)
189
+ method.call(this.logger, first, undefined, ...otherRest);
190
+ }
191
+ }
177
192
  }
178
193
  else {
179
194
  console.warn(`Invalid log arguments for "${level}"`, args);
@@ -193,7 +208,7 @@ export default class SimpleLogger {
193
208
  const { msg, rest } = extractMessage(args);
194
209
  const fullMsg = util.format(msg, ...rest);
195
210
  const ctx = Object.entries({ ...this.bindings, ...context })
196
- .map(([k, v]) => `${k}=${v}`)
211
+ .map(([k, v]) => `${k}=${String(v)}`)
197
212
  .join(' ');
198
213
  const prefix = `[${time}] ${levelStr}`;
199
214
  const contextStr = ctx ? ` (${ctx})` : '';
@@ -253,9 +268,7 @@ export default class SimpleLogger {
253
268
  */
254
269
  child(newBindings) {
255
270
  const merged = { ...this.bindings, ...newBindings };
256
- if (this.isExternal &&
257
- typeof this.logger === 'object' &&
258
- this.logger !== null) {
271
+ if (this.isExternal) {
259
272
  const logger = this.logger;
260
273
  const childFn = logger.child;
261
274
  if (typeof childFn === 'function') {
@@ -288,8 +301,29 @@ export default class SimpleLogger {
288
301
  * @return {void}
289
302
  */
290
303
  logFunctionEnd(name) {
291
- const caller = name || getCallerName();
304
+ const caller = name ?? getCallerName();
292
305
  this.trace(`Function end: ${caller}`);
293
306
  }
307
+ /**
308
+ * Flushes the logger buffer if the external logger supports it.
309
+ * This is useful for ensuring all buffered log entries are written before the application exits.
310
+ *
311
+ * @return {Promise<void>} A promise that resolves when the flush is complete.
312
+ */
313
+ async flush() {
314
+ if (!this.isExternal) {
315
+ return;
316
+ }
317
+ const logger = this.logger;
318
+ if (typeof logger.flush === 'function') {
319
+ try {
320
+ const promisifiedFlush = util.promisify(logger.flush.bind(logger));
321
+ return await promisifiedFlush();
322
+ }
323
+ catch {
324
+ // Ignore flush errors - they're not critical
325
+ }
326
+ }
327
+ }
294
328
  }
295
329
  //# sourceMappingURL=simple-logger.js.map