|
|
@ -1,4 +1,4 @@
|
|
|
|
import { omit } from './util'
|
|
|
|
import { omit } from "./util";
|
|
|
|
|
|
|
|
|
|
|
|
export enum LogLevel {
|
|
|
|
export enum LogLevel {
|
|
|
|
ALL = 0,
|
|
|
|
ALL = 0,
|
|
|
@ -25,7 +25,7 @@ export function parseLogLevel(
|
|
|
|
export interface LogMessage {
|
|
|
|
export interface LogMessage {
|
|
|
|
scope: string;
|
|
|
|
scope: string;
|
|
|
|
level: LogLevel;
|
|
|
|
level: LogLevel;
|
|
|
|
message: string | Record<string, unknown>;
|
|
|
|
msg: string | Record<string, unknown>;
|
|
|
|
stacktrace?: string;
|
|
|
|
stacktrace?: string;
|
|
|
|
error?: Error;
|
|
|
|
error?: Error;
|
|
|
|
timestamp: Date;
|
|
|
|
timestamp: Date;
|
|
|
@ -54,31 +54,33 @@ export type FlattenedLogMessage = Record<string, unknown>;
|
|
|
|
* ```
|
|
|
|
* ```
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
export function flattenMessage(msg: LogMessage): FlattenedLogMessage {
|
|
|
|
export function flattenMessage(msg: LogMessage): FlattenedLogMessage {
|
|
|
|
if (typeof msg.message === 'string') {
|
|
|
|
if (typeof msg.msg === "string") {
|
|
|
|
return { ...msg, level: LogLevel[msg.level] };
|
|
|
|
return { ...msg, level: LogLevel[msg.level] };
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
const { message, ...rest } = msg;
|
|
|
|
const { msg, ...rest } = msg;
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
...omit(message, [
|
|
|
|
...omit(msg, [
|
|
|
|
'scope',
|
|
|
|
"scope",
|
|
|
|
'level',
|
|
|
|
"level",
|
|
|
|
'stacktrace',
|
|
|
|
"stacktrace",
|
|
|
|
'error',
|
|
|
|
"error",
|
|
|
|
'timestamp',
|
|
|
|
"timestamp",
|
|
|
|
]),
|
|
|
|
]),
|
|
|
|
...rest,
|
|
|
|
...rest,
|
|
|
|
level: LogLevel[msg.level],
|
|
|
|
level: LogLevel[msg.level],
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
export type LogMessageFormatter = (msg: LogMessage) => string | FlattenedLogMessage;
|
|
|
|
export type LogMessageFormatter = (
|
|
|
|
|
|
|
|
msg: LogMessage,
|
|
|
|
|
|
|
|
) => string | FlattenedLogMessage;
|
|
|
|
|
|
|
|
|
|
|
|
export function structuredLogMessageFormatter(msg: LogMessage): string {
|
|
|
|
export function structuredLogMessageFormatter(msg: LogMessage): string {
|
|
|
|
return JSON.stringify(flattenMessage(msg));
|
|
|
|
return JSON.stringify(flattenMessage(msg));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export function simpleTextLogMessageFormatter(msg: LogMessage): string {
|
|
|
|
export function simpleTextLogMessageFormatter(msg: LogMessage): string {
|
|
|
|
return `[${msg.scope}] - ${msg.level}: ${msg.message}`;
|
|
|
|
return `[${msg.scope}] - ${msg.level}: ${msg.msg}`;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
export default LogMessage;
|
|
|
|
export default LogMessage;
|
|
|
|