Change the naming convention for LogMessage internal message field.

This commit is contained in:
2025-05-19 17:59:29 -05:00
parent f21cce9944
commit ef2b0ed750
3 changed files with 43 additions and 41 deletions

View File

@ -1,6 +1,6 @@
{
"name": "@jdbernard/logging",
"version": "2.0.0",
"version": "2.1.0",
"description": "Simple Javascript logging service.",
"main": "dist/index.js",
"types": "dist/index.d.ts",
@ -8,7 +8,7 @@
"/dist"
],
"scripts": {
"build": "tsc",
"build": "bunx tsc",
"prepare": "npm run build",
"test": "echo \"Error: no test specified\" && exit 1"
},

View File

@ -1,4 +1,4 @@
import { omit } from './util'
import { omit } from "./util";
export enum LogLevel {
ALL = 0,
@ -25,7 +25,7 @@ export function parseLogLevel(
export interface LogMessage {
scope: string;
level: LogLevel;
message: string | Record<string, unknown>;
msg: string | Record<string, unknown>;
stacktrace?: string;
error?: Error;
timestamp: Date;
@ -53,32 +53,34 @@ export type FlattenedLogMessage = Record<string, unknown>;
* {"scope":"example","level":"INFO","foo":"bar","baz":"qux","timestamp":"2020-01-01T00:00:00.000Z"}
* ```
*/
export function flattenMessage(msg: LogMessage): FlattenedLogMessage {
if (typeof msg.message === 'string') {
return { ...msg, level: LogLevel[msg.level] };
export function flattenMessage(logMsg: LogMessage): FlattenedLogMessage {
if (typeof logMsg.msg === "string") {
return { ...logMsg, level: LogLevel[logMsg.level] };
} else {
const { message, ...rest } = msg;
const { msg, ...rest } = logMsg;
return {
...omit(message, [
'scope',
'level',
'stacktrace',
'error',
'timestamp',
...omit(msg, [
"scope",
"level",
"stacktrace",
"error",
"timestamp",
]),
...rest,
level: LogLevel[msg.level],
level: LogLevel[logMsg.level],
};
}
}
export type LogMessageFormatter = (msg: LogMessage) => string | FlattenedLogMessage;
export type LogMessageFormatter = (
msg: LogMessage,
) => string | FlattenedLogMessage;
export function structuredLogMessageFormatter(msg: LogMessage): string {
return JSON.stringify(flattenMessage(msg));
}
export function simpleTextLogMessageFormatter(msg: LogMessage): string {
return `[${msg.scope}] - ${msg.level}: ${msg.message}`;
return `[${msg.scope}] - ${msg.level}: ${msg.msg}`;
}
export default LogMessage;

View File

@ -55,7 +55,7 @@ export class Logger {
public doLog(
level: LogLevel,
message: Error | MessageType,
msg: Error | MessageType,
stacktrace?: string,
): void {
if (level < this.getEffectiveThreshold()) {
@ -65,57 +65,57 @@ export class Logger {
const logMsg: LogMessage = {
scope: this.name,
level,
message: '',
msg: '',
stacktrace: '',
timestamp: new Date(),
};
if (message === undefined || message === null) {
logMsg.message = message;
if (msg === undefined || msg === null) {
logMsg.msg = msg;
logMsg.stacktrace = stacktrace ?? '';
} else if (message instanceof Error) {
const error = message as Error;
} else if (msg instanceof Error) {
const error = msg as Error;
logMsg.error = error;
logMsg.message = `${error.name}: ${error.message}`;
logMsg.msg = `${error.name}: ${error.message}`;
logMsg.stacktrace = stacktrace ?? error.stack ?? '';
} else if (isDeferredMsg(message)) {
logMsg.message = message();
} else if (isDeferredMsg(msg)) {
logMsg.msg = msg();
logMsg.stacktrace = stacktrace == null ? '' : stacktrace;
} else {
// string | object
logMsg.message = message;
logMsg.msg = msg;
logMsg.stacktrace = stacktrace == null ? '' : stacktrace;
}
this.sendToAppenders(logMsg);
}
public trace(message: Error | MessageType, stacktrace?: string): void {
this.doLog(LogLevel.TRACE, message, stacktrace);
public trace(msg: Error | MessageType, stacktrace?: string): void {
this.doLog(LogLevel.TRACE, msg, stacktrace);
}
public debug(message: Error | MessageType, stacktrace?: string): void {
this.doLog(LogLevel.DEBUG, message, stacktrace);
public debug(msg: Error | MessageType, stacktrace?: string): void {
this.doLog(LogLevel.DEBUG, msg, stacktrace);
}
public log(message: MessageType, stacktrace?: string): void {
this.doLog(LogLevel.LOG, message, stacktrace);
public log(msg: MessageType, stacktrace?: string): void {
this.doLog(LogLevel.LOG, msg, stacktrace);
}
public info(message: MessageType, stacktrace?: string): void {
this.doLog(LogLevel.INFO, message, stacktrace);
public info(msg: MessageType, stacktrace?: string): void {
this.doLog(LogLevel.INFO, msg, stacktrace);
}
public warn(message: MessageType, stacktrace?: string): void {
this.doLog(LogLevel.WARN, message, stacktrace);
public warn(msg: MessageType, stacktrace?: string): void {
this.doLog(LogLevel.WARN, msg, stacktrace);
}
public error(message: Error | MessageType, stacktrace?: string): void {
this.doLog(LogLevel.ERROR, message, stacktrace);
public error(msg: Error | MessageType, stacktrace?: string): void {
this.doLog(LogLevel.ERROR, msg, stacktrace);
}
public fatal(message: Error | MessageType, stacktrace?: string): void {
this.doLog(LogLevel.FATAL, message, stacktrace);
public fatal(msg: Error | MessageType, stacktrace?: string): void {
this.doLog(LogLevel.FATAL, msg, stacktrace);
}
protected sendToAppenders(logMsg: LogMessage) {