@rsdk/logging 5.7.0-next.2 → 6.0.0-next.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/dist/implementations/index.d.ts +1 -0
- package/dist/implementations/index.js +1 -0
- package/dist/implementations/index.js.map +1 -1
- package/dist/implementations/noop-logger.class.d.ts +40 -0
- package/dist/implementations/noop-logger.class.js +36 -0
- package/dist/implementations/noop-logger.class.js.map +1 -0
- package/dist/implementations/pino-logger.class.d.ts +11 -0
- package/dist/implementations/pino-logger.class.js +11 -0
- package/dist/implementations/pino-logger.class.js.map +1 -1
- package/package.json +2 -2
- package/src/implementations/index.ts +1 -0
- package/src/implementations/noop-logger.class.ts +71 -0
- package/src/implementations/pino-logger.class.spec.ts +117 -0
- package/src/implementations/pino-logger.class.ts +11 -0
|
@@ -14,5 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./noop-logger.class"), exports);
|
|
17
18
|
__exportStar(require("./pino-logger.class"), exports);
|
|
18
19
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/implementations/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/implementations/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,sDAAoC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { ErrorLike } from '@rsdk/common';
|
|
2
|
+
import type { ILogger } from '../logger.interface';
|
|
3
|
+
import type { LogLevel, Params } from '../types';
|
|
4
|
+
/**
|
|
5
|
+
* Implementation of ILogger interface that does nothing.
|
|
6
|
+
* Used when logging needs to be completely disabled.
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - Implements all ILogger methods but performs no operations
|
|
10
|
+
* - Useful for testing or when logging needs to be disabled
|
|
11
|
+
*/
|
|
12
|
+
export declare class NoopLogger implements ILogger {
|
|
13
|
+
fatal(error: Error): void;
|
|
14
|
+
fatal(message: string): void;
|
|
15
|
+
fatal(message: string, params: Params): void;
|
|
16
|
+
fatal(message: string, error: ErrorLike): void;
|
|
17
|
+
error(error: Error): void;
|
|
18
|
+
error(message: string): void;
|
|
19
|
+
error(message: string, params: Params): void;
|
|
20
|
+
error(message: string, error: ErrorLike): void;
|
|
21
|
+
warn(error: ErrorLike): void;
|
|
22
|
+
warn(message: string): void;
|
|
23
|
+
warn(message: string, params: Params): void;
|
|
24
|
+
warn(message: string, error: ErrorLike): void;
|
|
25
|
+
info(message: string): void;
|
|
26
|
+
info(message: string, params: Params): void;
|
|
27
|
+
debug(error: ErrorLike): void;
|
|
28
|
+
debug(params: Params): void;
|
|
29
|
+
debug(message: string): void;
|
|
30
|
+
debug(message: string, params: Params): void;
|
|
31
|
+
trace(error: ErrorLike): void;
|
|
32
|
+
trace(params: Params): void;
|
|
33
|
+
trace(message: string): void;
|
|
34
|
+
trace(message: string, params: Params): void;
|
|
35
|
+
log(level: LogLevel, message: string): void;
|
|
36
|
+
log(level: LogLevel, error: ErrorLike): void;
|
|
37
|
+
log(level: LogLevel, params: Params): void;
|
|
38
|
+
log(level: LogLevel, message: string, params?: Params): void;
|
|
39
|
+
log(level: LogLevel, message: string, error?: ErrorLike): void;
|
|
40
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NoopLogger = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Implementation of ILogger interface that does nothing.
|
|
6
|
+
* Used when logging needs to be completely disabled.
|
|
7
|
+
*
|
|
8
|
+
* Features:
|
|
9
|
+
* - Implements all ILogger methods but performs no operations
|
|
10
|
+
* - Useful for testing or when logging needs to be disabled
|
|
11
|
+
*/
|
|
12
|
+
class NoopLogger {
|
|
13
|
+
fatal() {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
error() {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
warn() {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
info() {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
debug() {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
trace() {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
log() {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.NoopLogger = NoopLogger;
|
|
36
|
+
//# sourceMappingURL=noop-logger.class.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noop-logger.class.js","sourceRoot":"","sources":["../../src/implementations/noop-logger.class.ts"],"names":[],"mappings":";;;AAMA;;;;;;;GAOG;AAEH,MAAa,UAAU;IAKrB,KAAK;QACH,OAAO;IACT,CAAC;IAMD,KAAK;QACH,OAAO;IACT,CAAC;IAMD,IAAI;QACF,OAAO;IACT,CAAC;IAID,IAAI;QACF,OAAO;IACT,CAAC;IAMD,KAAK;QACH,OAAO;IACT,CAAC;IAMD,KAAK;QACH,OAAO;IACT,CAAC;IAOD,GAAG;QACD,OAAO;IACT,CAAC;CACF;AAvDD,gCAuDC"}
|
|
@@ -9,6 +9,17 @@ import { LogLevel } from '../types';
|
|
|
9
9
|
* https://github.com/pinojs/pino-pretty/issues/275
|
|
10
10
|
*/
|
|
11
11
|
type GetLogger = () => Pino;
|
|
12
|
+
/**
|
|
13
|
+
* Implementation of ILogger interface using Pino logger.
|
|
14
|
+
* Provides logging functionality with different severity levels and context support.
|
|
15
|
+
*
|
|
16
|
+
* Features:
|
|
17
|
+
* - Supports trace, debug, info, warn, error and fatal log levels
|
|
18
|
+
* - Includes context information in logs
|
|
19
|
+
* - Handles both string messages and error objects
|
|
20
|
+
* - Normalizes and formats error objects and parameters
|
|
21
|
+
* - Emits log events through provided callback
|
|
22
|
+
*/
|
|
12
23
|
export declare class PinoLogger implements ILogger {
|
|
13
24
|
private readonly context;
|
|
14
25
|
/**
|
|
@@ -4,6 +4,17 @@ exports.PinoLogger = void 0;
|
|
|
4
4
|
const common_1 = require("@rsdk/common");
|
|
5
5
|
const helpers_1 = require("../helpers");
|
|
6
6
|
const types_1 = require("../types");
|
|
7
|
+
/**
|
|
8
|
+
* Implementation of ILogger interface using Pino logger.
|
|
9
|
+
* Provides logging functionality with different severity levels and context support.
|
|
10
|
+
*
|
|
11
|
+
* Features:
|
|
12
|
+
* - Supports trace, debug, info, warn, error and fatal log levels
|
|
13
|
+
* - Includes context information in logs
|
|
14
|
+
* - Handles both string messages and error objects
|
|
15
|
+
* - Normalizes and formats error objects and parameters
|
|
16
|
+
* - Emits log events through provided callback
|
|
17
|
+
*/
|
|
7
18
|
class PinoLogger {
|
|
8
19
|
context;
|
|
9
20
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pino-logger.class.js","sourceRoot":"","sources":["../../src/implementations/pino-logger.class.ts"],"names":[],"mappings":";;;AACA,yCAAsE;AAGtE,wCAA8C;AAG9C,oCAAoC;AAUpC,MAAa,UAAU;IACJ,OAAO,CAAS;IAEjC;;OAEG;IACc,KAAK,CAAY;IACjB,IAAI,CAAY;IAEjC,YAAY,IAAe,EAAE,IAAe,EAAE,OAAuB;QACnE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,IAAA,0BAAgB,EAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAID,KAAK,CAAC,IAAqB,EAAE,MAAe;QAC1C,IAAI,CAAC,GAAG,CAAC,gBAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAID,KAAK,CAAC,IAAqB,EAAE,MAAe;QAC1C,IAAI,CAAC,GAAG,CAAC,gBAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,MAAe;QACnC,IAAI,CAAC,GAAG,CAAC,gBAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAKD,IAAI,CAAC,IAAwB,EAAE,IAAyB;QACtD,IAAI,CAAC,GAAG,CAAC,gBAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAKD,KAAK,CAAC,IAAoB,EAAE,IAAgB;QAC1C,IAAI,CAAC,GAAG,CAAC,gBAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAKD,KAAK,CAAC,IAAoB,EAAE,IAAgB;QAC1C,IAAI,CAAC,GAAG,CAAC,gBAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAeD,GAAG,CACD,KAAe,EACf,IAAiC,EACjC,IAAyB;QAEzB,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAwB;YAChC,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;QAEF,IAAI,OAAO,GAAuB,SAAS,CAAC;QAE5C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,IAAI,IAAA,oBAAW,EAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QACzB,CAAC;QAED,MAAM,aAAa,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAE7D,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,OAAO,GAAqB;gBAChC,QAAQ,EAAE,sBAAa;aACxB,CAAC;YAEF,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;gBAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,IAAA,mBAAU,GAAE,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAA,mBAAU,GAAE,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;CACF;AA3GD,gCA2GC"}
|
|
1
|
+
{"version":3,"file":"pino-logger.class.js","sourceRoot":"","sources":["../../src/implementations/pino-logger.class.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rsdk/logging",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.0-next.0",
|
|
4
4
|
"description": "Base framework independent logging functionality",
|
|
5
5
|
"license": "Apache License 2.0",
|
|
6
6
|
"publishConfig": {
|
|
@@ -17,5 +17,5 @@
|
|
|
17
17
|
"peerDependencies": {
|
|
18
18
|
"@rsdk/common": "*"
|
|
19
19
|
},
|
|
20
|
-
"gitHead": "
|
|
20
|
+
"gitHead": "215cccea23d95118dd8b6af3ce11c6a35ce19c30"
|
|
21
21
|
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/unified-signatures */
|
|
2
|
+
import type { ErrorLike } from '@rsdk/common';
|
|
3
|
+
|
|
4
|
+
import type { ILogger } from '../logger.interface';
|
|
5
|
+
import type { LogLevel, Params } from '../types';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Implementation of ILogger interface that does nothing.
|
|
9
|
+
* Used when logging needs to be completely disabled.
|
|
10
|
+
*
|
|
11
|
+
* Features:
|
|
12
|
+
* - Implements all ILogger methods but performs no operations
|
|
13
|
+
* - Useful for testing or when logging needs to be disabled
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
export class NoopLogger implements ILogger {
|
|
17
|
+
fatal(error: Error): void;
|
|
18
|
+
fatal(message: string): void;
|
|
19
|
+
fatal(message: string, params: Params): void;
|
|
20
|
+
fatal(message: string, error: ErrorLike): void;
|
|
21
|
+
fatal(): void {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
error(error: Error): void;
|
|
26
|
+
error(message: string): void;
|
|
27
|
+
error(message: string, params: Params): void;
|
|
28
|
+
error(message: string, error: ErrorLike): void;
|
|
29
|
+
error(): void {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
warn(error: ErrorLike): void;
|
|
34
|
+
warn(message: string): void;
|
|
35
|
+
warn(message: string, params: Params): void;
|
|
36
|
+
warn(message: string, error: ErrorLike): void;
|
|
37
|
+
warn(): void {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
info(message: string): void;
|
|
42
|
+
info(message: string, params: Params): void;
|
|
43
|
+
info(): void {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
debug(error: ErrorLike): void;
|
|
48
|
+
debug(params: Params): void;
|
|
49
|
+
debug(message: string): void;
|
|
50
|
+
debug(message: string, params: Params): void;
|
|
51
|
+
debug(): void {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
trace(error: ErrorLike): void;
|
|
56
|
+
trace(params: Params): void;
|
|
57
|
+
trace(message: string): void;
|
|
58
|
+
trace(message: string, params: Params): void;
|
|
59
|
+
trace(): void {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
log(level: LogLevel, message: string): void;
|
|
64
|
+
log(level: LogLevel, error: ErrorLike): void;
|
|
65
|
+
log(level: LogLevel, params: Params): void;
|
|
66
|
+
log(level: LogLevel, message: string, params?: Params): void;
|
|
67
|
+
log(level: LogLevel, message: string, error?: ErrorLike): void;
|
|
68
|
+
log(): void {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import type { Logger as Pino } from 'pino';
|
|
2
|
+
|
|
3
|
+
import { LogLevel } from '../types';
|
|
4
|
+
|
|
5
|
+
import { PinoLogger } from './pino-logger.class';
|
|
6
|
+
|
|
7
|
+
describe('PinoLogger', () => {
|
|
8
|
+
let mockPino: jest.Mocked<Pino>;
|
|
9
|
+
let logger: PinoLogger;
|
|
10
|
+
let emitSpy: jest.Mock;
|
|
11
|
+
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
mockPino = {
|
|
14
|
+
trace: jest.fn(),
|
|
15
|
+
debug: jest.fn(),
|
|
16
|
+
info: jest.fn(),
|
|
17
|
+
warn: jest.fn(),
|
|
18
|
+
error: jest.fn(),
|
|
19
|
+
fatal: jest.fn(),
|
|
20
|
+
levelVal: 10, // trace level
|
|
21
|
+
levels: {
|
|
22
|
+
values: {
|
|
23
|
+
[LogLevel.trace]: 10,
|
|
24
|
+
[LogLevel.debug]: 20,
|
|
25
|
+
[LogLevel.info]: 30,
|
|
26
|
+
[LogLevel.warn]: 40,
|
|
27
|
+
[LogLevel.error]: 50,
|
|
28
|
+
[LogLevel.fatal]: 60,
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
} as unknown as jest.Mocked<Pino>;
|
|
32
|
+
|
|
33
|
+
emitSpy = jest.fn();
|
|
34
|
+
logger = new PinoLogger(() => mockPino, emitSpy, 'TestContext');
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
describe('binary data handling', () => {
|
|
38
|
+
it('should handle Buffer and ArrayBuffer in parameters', () => {
|
|
39
|
+
// Arrange
|
|
40
|
+
const params = {
|
|
41
|
+
normalField: 'test',
|
|
42
|
+
buffer: Buffer.from('binary content'),
|
|
43
|
+
arrayBuffer: new ArrayBuffer(16),
|
|
44
|
+
nested: {
|
|
45
|
+
buffer: Buffer.from('nested binary'),
|
|
46
|
+
arrayBuffer: new ArrayBuffer(8),
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
// Act
|
|
51
|
+
logger.info('test message', params);
|
|
52
|
+
|
|
53
|
+
// Assert
|
|
54
|
+
expect(mockPino.info).toHaveBeenCalledWith(
|
|
55
|
+
expect.objectContaining({
|
|
56
|
+
context: 'TestContext',
|
|
57
|
+
normalField: 'test',
|
|
58
|
+
buffer: expect.stringContaining('[Buffer'),
|
|
59
|
+
arrayBuffer: '[ArrayBuffer 16]',
|
|
60
|
+
nested: expect.objectContaining({
|
|
61
|
+
buffer: expect.stringContaining('[Buffer'),
|
|
62
|
+
arrayBuffer: '[ArrayBuffer 8]',
|
|
63
|
+
}),
|
|
64
|
+
}),
|
|
65
|
+
'test message',
|
|
66
|
+
);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it('should handle binary data in error object', () => {
|
|
70
|
+
// Arrange
|
|
71
|
+
const error = new Error('test error', {
|
|
72
|
+
cause: {
|
|
73
|
+
binaryData: Buffer.from('some binary data'),
|
|
74
|
+
arrayBuffer: new ArrayBuffer(16),
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
// Act
|
|
79
|
+
logger.error('Error occurred', error);
|
|
80
|
+
|
|
81
|
+
// Assert
|
|
82
|
+
expect(mockPino.error).toHaveBeenCalledWith(
|
|
83
|
+
expect.objectContaining({
|
|
84
|
+
context: 'TestContext',
|
|
85
|
+
error: expect.objectContaining({
|
|
86
|
+
cause: expect.objectContaining({
|
|
87
|
+
binaryData: expect.stringContaining('[Buffer'),
|
|
88
|
+
arrayBuffer: '[ArrayBuffer 16]',
|
|
89
|
+
}),
|
|
90
|
+
}),
|
|
91
|
+
}),
|
|
92
|
+
'Error occurred',
|
|
93
|
+
);
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
it('should emit normalized data without binary content', () => {
|
|
97
|
+
// Arrange
|
|
98
|
+
const params = {
|
|
99
|
+
buffer: Buffer.from('binary content'),
|
|
100
|
+
arrayBuffer: new ArrayBuffer(16),
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
// Act
|
|
104
|
+
logger.info('test message', params);
|
|
105
|
+
|
|
106
|
+
// Assert
|
|
107
|
+
expect(emitSpy).toHaveBeenCalledWith(
|
|
108
|
+
LogLevel.info,
|
|
109
|
+
expect.objectContaining({
|
|
110
|
+
context: 'TestContext',
|
|
111
|
+
buffer: expect.stringContaining('[Buffer'),
|
|
112
|
+
arrayBuffer: '[ArrayBuffer 16]',
|
|
113
|
+
}),
|
|
114
|
+
);
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
});
|
|
@@ -15,6 +15,17 @@ import { LogLevel } from '../types';
|
|
|
15
15
|
|
|
16
16
|
type GetLogger = () => Pino;
|
|
17
17
|
|
|
18
|
+
/**
|
|
19
|
+
* Implementation of ILogger interface using Pino logger.
|
|
20
|
+
* Provides logging functionality with different severity levels and context support.
|
|
21
|
+
*
|
|
22
|
+
* Features:
|
|
23
|
+
* - Supports trace, debug, info, warn, error and fatal log levels
|
|
24
|
+
* - Includes context information in logs
|
|
25
|
+
* - Handles both string messages and error objects
|
|
26
|
+
* - Normalizes and formats error objects and parameters
|
|
27
|
+
* - Emits log events through provided callback
|
|
28
|
+
*/
|
|
18
29
|
export class PinoLogger implements ILogger {
|
|
19
30
|
private readonly context: string;
|
|
20
31
|
|