diff --git a/libs/logger/src/logger.ts b/libs/logger/src/logger.ts index 087fa12..867542d 100644 --- a/libs/logger/src/logger.ts +++ b/libs/logger/src/logger.ts @@ -136,18 +136,34 @@ export class Logger { } error(message: string | object, metadata?: LogMetadata & { error?: any } | unknown): void { - // If metadata is an Error, normalize it - if(metadata instanceof Error){ - metadata = { error: metadata }; + let data: any = {}; + + // Handle metadata parameter normalization + if (metadata instanceof Error) { + // Direct Error object as metadata + data = { error: metadata }; + } else if (metadata !== null && typeof metadata === 'object') { + // Object metadata (including arrays, but not null) + data = { ...metadata }; + } else if (metadata !== undefined) { + // Primitive values (string, number, boolean, etc.) + data = { metadata }; } - const data = typeof metadata === 'object' ? { ...metadata } : { error: message } as any; - - // Handle any type of error automatically - if (data.error) { - data.err = this.normalizeError(data.error); - delete data.error; - } - + + // Handle multiple error properties in metadata + 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]); + + // Only delete the original 'error' key to maintain other error properties + if (key === 'error') { + delete data.error; + } + } + }); + this.log('error', message, data); }