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
|
// Logging configuration
|
||||||
export const loggingConfigSchema = z.object({
|
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'),
|
format: z.enum(['json', 'pretty']).default('json'),
|
||||||
loki: z.object({
|
loki: z.object({
|
||||||
enabled: z.boolean().default(false),
|
enabled: z.boolean().default(false),
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ const loggerCache = new Map<string, pino.Logger>();
|
||||||
|
|
||||||
// Global config that can be set
|
// Global config that can be set
|
||||||
let globalConfig: LoggerConfig = {
|
let globalConfig: LoggerConfig = {
|
||||||
logLevel: 'info',
|
logLevel: 'info', // Default to info, but trace and fatal are supported
|
||||||
logConsole: true,
|
logConsole: true,
|
||||||
logFile: false,
|
logFile: false,
|
||||||
logFilePath: './logs',
|
logFilePath: './logs',
|
||||||
|
|
@ -150,6 +150,10 @@ export class Logger {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Simple log level methods
|
// Simple log level methods
|
||||||
|
trace(message: string | object, metadata?: LogMetadata): void {
|
||||||
|
this.log('trace', message, metadata);
|
||||||
|
}
|
||||||
|
|
||||||
debug(message: string | object, metadata?: LogMetadata): void {
|
debug(message: string | object, metadata?: LogMetadata): void {
|
||||||
this.log('debug', message, metadata);
|
this.log('debug', message, metadata);
|
||||||
}
|
}
|
||||||
|
|
@ -194,6 +198,34 @@ export class Logger {
|
||||||
this.log('error', message, data);
|
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
|
* Normalize any error type to a structured format
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Standard log levels (simplified to pino defaults)
|
// 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
|
// Context that persists across log calls
|
||||||
export interface LogContext {
|
export interface LogContext {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue