Refactor to default to structured logging.

- Added `flattenMessage` and `FlattenedLogMessage` to default to
  structured logging.
- Rework the logic formatting messages for the ConsoleLogger.
- Add a more comprehensive README.
This commit is contained in:
2025-01-02 17:03:52 -06:00
parent 4a9f582ad8
commit c3e2152afb
9 changed files with 351 additions and 54 deletions

View File

@ -1,14 +1,22 @@
/*tslint:disable:no-console*/
import { LogMessage, LogLevel } from './log-message';
import LogAppender from './log-appender';
import {
LogLevel,
LogMessage,
LogMessageFormatter,
structuredLogMessageFormatter
} from './log-message';
import { LogAppender } from './log-appender';
export class ConsoleLogAppender implements LogAppender {
public threshold = LogLevel.ALL;
public formatter = structuredLogMessageFormatter;
constructor(threshold?: LogLevel) {
constructor(threshold?: LogLevel, formatter?: LogMessageFormatter) {
if (threshold) {
this.threshold = threshold;
}
if (formatter) {
this.formatter = formatter;
}
}
public appendMessage(msg: LogMessage): void {
@ -42,12 +50,12 @@ export class ConsoleLogAppender implements LogAppender {
break;
}
if (msg.error) {
logMethod(`[${msg.scope}]:`, msg.message, msg.error);
} else if (msg.stacktrace) {
logMethod(`[${msg.scope}]:`, msg.message, msg.stacktrace);
const strMsg = this.formatter(msg);
if (msg.error || msg.stacktrace) {
logMethod(strMsg, msg.error ?? msg.stacktrace);
} else {
logMethod(`[${msg.scope}]:`, msg.message);
logMethod(strMsg);
}
}
}