fixed logging

This commit is contained in:
Bojan Kucera 2025-06-05 09:05:40 -04:00
parent d0e8fd9e3f
commit 7c2e055dd4
8 changed files with 19 additions and 45 deletions

View file

@ -19,17 +19,6 @@ import type { LogLevel, LogContext, LogMetadata } from './types';
// Global logger instances cache
const loggerInstances = new Map<string, pino.Logger>();
// Pino log level mapping from string to number
const PINO_LEVELS: Record<LogLevel, number> = {
silly: 10,
debug: 20,
verbose: 25,
http: 30,
info: 30,
warn: 40,
error: 50
};
/**
* Create transport configuration for Pino based on options
*/
@ -50,16 +39,11 @@ function createTransports(serviceName: string, options?: {
if (enableConsole) {
targets.push({
target: 'pino-pretty',
level: loggingConfig.LOG_LEVEL,
options: {
level: loggingConfig.LOG_LEVEL, options: {
colorize: true,
translateTime: 'yyyy-mm-dd HH:MM:ss.l',
ignore: 'pid,hostname',
messageFormat: '[{service}] {msg}',
customPrettifiers: {
service: (service: string) => `${service}`,
level: (level: string) => `[${level.toUpperCase()}]`
}
messageFormat: '[{service}] {msg}'
}
});
}
@ -95,7 +79,7 @@ function createTransports(serviceName: string, options?: {
level: loggingConfig.LOG_LEVEL,
options: {
batching: true,
interval: lokiConfig.LOKI_FLUSH_INTERVAL_MS,
interval: lokiConfig.LOKI_BATCH_WAIT,
host: lokiConfig.LOKI_URL || `http://${lokiConfig.LOKI_HOST}:${lokiConfig.LOKI_PORT}`,
basicAuth: lokiConfig.LOKI_USERNAME && lokiConfig.LOKI_PASSWORD
? {
@ -109,11 +93,13 @@ function createTransports(serviceName: string, options?: {
...(lokiConfig.LOKI_DEFAULT_LABELS ? JSON.parse(lokiConfig.LOKI_DEFAULT_LABELS) : {})
},
timeout: lokiConfig.LOKI_PUSH_TIMEOUT || 10000,
silenceErrors: false
silenceErrors: false,
// Better JSON handling
replaceTimestamp: false,
}
});
}
return {
targets
};
@ -161,27 +147,25 @@ function buildLogger(serviceName: string, options?: {
enableFile,
enableLoki
});
const loggerConfig: pino.LoggerOptions = {
// level: PINO_LEVELS[level] ? level : 'info',
// customLevels: PINO_LEVELS,
useOnlyCustomLevels: false,
level: level,
timestamp: () => `,"timestamp":"${new Date().toISOString()}"`,
// formatters: {
// level: (label: string) => ({ level: label }),
// bindings: () => ({})
// },
base: {
service: serviceName,
environment: loggingConfig.LOG_ENVIRONMENT,
version: loggingConfig.LOG_SERVICE_VERSION
},
transport
}
};
// Only add transport if targets exist to avoid worker thread issues
if (transport && transport.targets && transport.targets.length > 0) {
loggerConfig.transport = transport;
}
return pino(loggerConfig);
}
/**
* Enhanced Logger class with convenience methods and flexible message handling
*/
@ -199,8 +183,7 @@ export class Logger {
this.serviceName = serviceName;
this.context = context;
this.pino = createLogger(serviceName, options);
}
/**
} /**
* Flexible log method that accepts string or object messages
*/
log(level: LogLevel, message: string | object, metadata?: LogMetadata): void {
@ -221,7 +204,7 @@ export class Logger {
}
/**
* Map custom log levels to Pino levels
* Map custom log levels to standard Pino levels
*/
private mapToPinoLevel(level: LogLevel): string {
switch (level) {