added trace and fetal to logger

This commit is contained in:
Boki 2025-06-20 07:32:10 -04:00
parent 65fb9116fb
commit 7a8e542ada
3 changed files with 35 additions and 3 deletions

View file

@ -17,7 +17,7 @@ export const serviceConfigSchema = z.object({
// Logging configuration
export const loggingConfigSchema = z.object({
level: z.enum(['debug', 'info', 'warn', 'error']).default('info'),
level: z.enum(['trace', 'debug', 'info', 'warn', 'error', 'fatal']).default('info'),
format: z.enum(['json', 'pretty']).default('json'),
loki: z.object({
enabled: z.boolean().default(false),

View file

@ -16,7 +16,7 @@ const loggerCache = new Map<string, pino.Logger>();
// Global config that can be set
let globalConfig: LoggerConfig = {
logLevel: 'info',
logLevel: 'info', // Default to info, but trace and fatal are supported
logConsole: true,
logFile: false,
logFilePath: './logs',
@ -150,6 +150,10 @@ export class Logger {
}
// Simple log level methods
trace(message: string | object, metadata?: LogMetadata): void {
this.log('trace', message, metadata);
}
debug(message: string | object, metadata?: LogMetadata): void {
this.log('debug', message, metadata);
}
@ -194,6 +198,34 @@ export class Logger {
this.log('error', message, data);
}
fatal(message: string | object, metadata?: (LogMetadata & { error?: any }) | unknown): void {
let data: any = {};
// Handle metadata parameter normalization (same as error)
if (metadata instanceof Error) {
data = { error: metadata };
} else if (metadata !== null && typeof metadata === 'object') {
data = { ...metadata };
} else if (metadata !== undefined) {
data = { metadata };
}
// Normalize error objects in the data
const errorKeys = ['error', 'err', 'primaryError', 'secondaryError'];
errorKeys.forEach(key => {
if (data[key]) {
const normalizedKey = key === 'error' ? 'err' : `${key}_normalized`;
data[normalizedKey] = this.normalizeError(data[key]);
if (key === 'error') {
delete data.error;
}
}
});
this.log('fatal', message, data);
}
/**
* Normalize any error type to a structured format
*/

View file

@ -3,7 +3,7 @@
*/
// Standard log levels (simplified to pino defaults)
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';
// Context that persists across log calls
export interface LogContext {