2025-01-02 17:03:52 -06:00
|
|
|
import {
|
2025-01-07 08:48:37 -06:00
|
|
|
flattenMessage,
|
2025-01-02 17:03:52 -06:00
|
|
|
LogLevel,
|
|
|
|
LogMessage,
|
|
|
|
LogMessageFormatter,
|
|
|
|
} from './log-message';
|
|
|
|
import { LogAppender } from './log-appender';
|
2020-08-07 08:54:06 -05:00
|
|
|
|
|
|
|
export class ConsoleLogAppender implements LogAppender {
|
|
|
|
public threshold = LogLevel.ALL;
|
2025-01-07 08:48:37 -06:00
|
|
|
public formatter: LogMessageFormatter = flattenMessage
|
2020-08-07 08:54:06 -05:00
|
|
|
|
2025-01-02 17:03:52 -06:00
|
|
|
constructor(threshold?: LogLevel, formatter?: LogMessageFormatter) {
|
2020-08-07 08:54:06 -05:00
|
|
|
if (threshold) {
|
|
|
|
this.threshold = threshold;
|
|
|
|
}
|
2025-01-02 17:03:52 -06:00
|
|
|
if (formatter) {
|
|
|
|
this.formatter = formatter;
|
|
|
|
}
|
2020-08-07 08:54:06 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public appendMessage(msg: LogMessage): void {
|
|
|
|
if (this.threshold && msg.level < this.threshold) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
let logMethod = console.log;
|
|
|
|
switch (msg.level) {
|
|
|
|
case LogLevel.ALL:
|
|
|
|
logMethod = console.log;
|
|
|
|
break;
|
|
|
|
case LogLevel.TRACE:
|
|
|
|
logMethod = console.log;
|
|
|
|
break;
|
|
|
|
case LogLevel.DEBUG:
|
|
|
|
logMethod = console.debug;
|
|
|
|
break;
|
|
|
|
case LogLevel.LOG:
|
|
|
|
logMethod = console.log;
|
|
|
|
break;
|
|
|
|
case LogLevel.INFO:
|
|
|
|
logMethod = console.info;
|
|
|
|
break;
|
|
|
|
case LogLevel.WARN:
|
|
|
|
logMethod = console.warn;
|
|
|
|
break;
|
|
|
|
case LogLevel.ERROR:
|
|
|
|
case LogLevel.FATAL:
|
|
|
|
logMethod = console.trace;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2025-01-02 17:03:52 -06:00
|
|
|
const strMsg = this.formatter(msg);
|
|
|
|
|
|
|
|
if (msg.error || msg.stacktrace) {
|
|
|
|
logMethod(strMsg, msg.error ?? msg.stacktrace);
|
2020-08-07 08:54:06 -05:00
|
|
|
} else {
|
2025-01-02 17:03:52 -06:00
|
|
|
logMethod(strMsg);
|
2020-08-07 08:54:06 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export default ConsoleLogAppender;
|