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,20 +1,13 @@
import { LogMessage, LogLevel } from './log-message';
import LogAppender from './log-appender';
import { LogMessage, LogLevel, flattenMessage, FlattenedLogMessage } from './log-message';
import { LogAppender } from './log-appender';
interface ApiMessage {
level: string;
message: string;
scope: string;
stacktrace: string;
timestamp: string;
}
export class ApiLogAppender implements LogAppender {
public batchSize = 10;
public minimumTimePassedInSec = 60;
public maximumTimePassedInSec = 120;
public threshold = LogLevel.ALL;
private msgBuffer: ApiMessage[] = [];
private msgBuffer: FlattenedLogMessage[] = [];
private lastSent = 0;
constructor(
@ -33,16 +26,7 @@ export class ApiLogAppender implements LogAppender {
return;
}
this.msgBuffer.push({
level: LogLevel[msg.level],
message:
typeof msg.message === 'string'
? msg.message
: JSON.stringify(msg.message),
scope: msg.scope,
stacktrace: msg.stacktrace,
timestamp: msg.timestamp.toISOString()
});
this.msgBuffer.push(flattenMessage(msg));
}
private doPost() {