diff --git a/libs/api/observability/src/lib/services/pino-logger.service.spec.ts b/libs/api/observability/src/lib/services/pino-logger.service.spec.ts index fc3ccc81..6773fe42 100644 --- a/libs/api/observability/src/lib/services/pino-logger.service.spec.ts +++ b/libs/api/observability/src/lib/services/pino-logger.service.spec.ts @@ -1,4 +1,5 @@ import pino from 'pino'; +import { Transform } from 'stream'; import { PinoLogger } from './pino-logger.service'; @@ -24,15 +25,12 @@ describe('PinoLogger', () => { const debug = true; logger = new PinoLogger(debug); - expect(pinoMock).toHaveBeenCalledWith({ - level: 'trace', - transport: { - target: 'pino-pretty', - colorize: true, - translateTime: 'SYS:dd.mm.yyyy hh:MM:ss', - ignore: 'pid,hostname', + expect(pinoMock).toHaveBeenCalledWith( + { + level: 'trace', }, - }); + expect.any(Transform), + ); }); it('should initialize pino with the correct configuration when debug is false', () => { diff --git a/libs/api/observability/src/lib/services/pino-logger.service.ts b/libs/api/observability/src/lib/services/pino-logger.service.ts index 41262414..7d3e1277 100644 --- a/libs/api/observability/src/lib/services/pino-logger.service.ts +++ b/libs/api/observability/src/lib/services/pino-logger.service.ts @@ -1,4 +1,7 @@ import pino from 'pino'; +import { OnUnknown } from 'pino-abstract-transport'; +import pretty from 'pino-pretty'; +import { Transform } from 'stream'; import { KordisLoggerService } from './kordis-logger-service.interface'; @@ -9,21 +12,29 @@ export class PinoLogger implements KordisLoggerService { private readonly logger: pino.Logger; constructor(debug: boolean) { - this.logger = pino( - debug - ? { - level: 'trace', - transport: { - target: 'pino-pretty', - colorize: true, - translateTime: 'SYS:dd.mm.yyyy hh:MM:ss', - ignore: 'pid,hostname', - }, - } - : { - level: 'info', - }, - ); + let pinoParams: + | [{ level: string }] + | [{ level: string }, Transform & OnUnknown]; + if (debug) { + pinoParams = [ + { + level: 'trace', + }, + pretty({ + colorize: true, + translateTime: 'SYS:dd.mm.yyyy hh:MM:ss', + ignore: 'pid,hostname', + }), + ]; + } else { + pinoParams = [ + { + level: 'info', + }, + ]; + } + + this.logger = pino(...pinoParams); } log(message: string, context?: string, args?: object): void {