@speckle/shared
Version:
Shared code between various Speckle JS packages
39 lines (33 loc) • 985 B
text/typescript
const clefLevels = {
60: 'Fatal', // FATAL
50: 'Error', // ERROR
40: 'Warning', // WARN
30: 'Information', // INFO = default when not provided
20: 'Debug', // DEBUG
10: 'Verbose' // TRACE / Verbose
} as const
export function toClefLogLevel(number: number) {
return {
'@l':
number in clefLevels
? clefLevels[number as keyof typeof clefLevels]
: clefLevels[30]
}
}
export function toClef(log: Record<string, unknown>): Record<string, unknown> {
// add the stuff CLEF wants ....
if (log.time) {
log['@t'] = new Date(log.time as Date).toISOString()
} else {
log['@t'] = new Date().toISOString()
}
if (log.level && (log.level as number) in clefLevels) {
log['@l'] = clefLevels[log.level as keyof typeof clefLevels]
}
const exception = log.error || log.err
if (exception) {
// Seq wants it as a string - try to prettify it with a legible stack trace
log['@x'] = (exception as Error).stack
}
return log
}