improved logger error type handling
This commit is contained in:
parent
d0bb4db042
commit
790b5ffed5
1 changed files with 27 additions and 11 deletions
|
|
@ -136,17 +136,33 @@ export class Logger {
|
||||||
}
|
}
|
||||||
|
|
||||||
error(message: string | object, metadata?: LogMetadata & { error?: any } | unknown): void {
|
error(message: string | object, metadata?: LogMetadata & { error?: any } | unknown): void {
|
||||||
// If metadata is an Error, normalize it
|
let data: any = {};
|
||||||
if(metadata instanceof Error){
|
|
||||||
metadata = { error: metadata };
|
|
||||||
}
|
|
||||||
const data = typeof metadata === 'object' ? { ...metadata } : { error: message } as any;
|
|
||||||
|
|
||||||
// Handle any type of error automatically
|
// Handle metadata parameter normalization
|
||||||
if (data.error) {
|
if (metadata instanceof Error) {
|
||||||
data.err = this.normalizeError(data.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 };
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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;
|
delete data.error;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
this.log('error', message, data);
|
this.log('error', message, data);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue