added trace and fetal to logger
This commit is contained in:
parent
65fb9116fb
commit
7a8e542ada
3 changed files with 35 additions and 3 deletions
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue