From 19bfd7e88abe622f90563201bc88dbfd8beef5ec Mon Sep 17 00:00:00 2001 From: Tatiana Vitorello Date: Thu, 6 Feb 2025 15:27:07 -0300 Subject: [PATCH] :recycle: refactor: improve logger to need initialization before usage --- src/logger.ts | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/logger.ts b/src/logger.ts index 4a77869..14ad6ca 100644 --- a/src/logger.ts +++ b/src/logger.ts @@ -2,7 +2,6 @@ import type winston from 'winston'; import { createLogger, format, transports } from 'winston'; import { getHookCorrelationId } from './hooks'; - type Severity = 'debug' | 'info' | 'http' | 'warn' | 'error'; export class WinstonLogger { @@ -38,14 +37,27 @@ export class WinstonLogger { } export class Logger { - private static loggerInstance = WinstonLogger.getInstance(); + private static loggerInstance: winston.Logger | undefined; + + private constructor() { } + + static initialize(serviceName: string) { + if (this.loggerInstance) return; + this.loggerInstance = WinstonLogger.getInstance(serviceName); + } + + private static getLogger() { + if (!this.loggerInstance) throw new Error('Logger not initialized'); + return this.loggerInstance; + } - static log( + private static log( severity: Severity, message: string, meta?: Record, err?: unknown ) { + const logger = this.getLogger(); const errorMsg = err instanceof Error ? `Error: ${err.message}` : ''; const errObject = err instanceof Error ? { @@ -58,7 +70,7 @@ export class Logger { const correlationId = getHookCorrelationId(); const logMessage = `${message}. ${errorMsg}`; const metaObj = { ...meta, err: errObject, correlationId }; - this.loggerInstance.log(severity, logMessage, metaObj); + logger.log(severity, logMessage, metaObj); } static debug(message: string, meta?: Record, err?: unknown) {