diff --git a/src/api-log-appender.ts b/src/api-log-appender.ts index 2ab1c84..b13ed13 100644 --- a/src/api-log-appender.ts +++ b/src/api-log-appender.ts @@ -5,7 +5,7 @@ export class ApiLogAppender implements LogAppender { public batchSize = 10 public minimumTimePassedInSec = 60 public maximumTimePassedInSec = 120 - public threshold = LogLevel.ALL + public threshold: LogLevel private msgBuffer: FlattenedLogMessage[] = [] private lastSent = 0 @@ -16,9 +16,7 @@ export class ApiLogAppender implements LogAppender { threshold?: LogLevel ) { setTimeout(this.checkPost, 1000) - if (threshold) { - this.threshold = threshold - } + this.threshold = threshold ?? LogLevel.ALL } public appendMessage(msg: LogMessage): void { diff --git a/src/buffer-log-appender.ts b/src/buffer-log-appender.ts new file mode 100644 index 0000000..c802722 --- /dev/null +++ b/src/buffer-log-appender.ts @@ -0,0 +1,21 @@ +import type { LogAppender } from './log-appender' +import { LogLevel, type LogMessage } from './log-message' + +export class BufferLogAppender implements LogAppender { + public threshold: LogLevel + public buffer: LogMessage[] + + constructor(buffer?: LogMessage[], threshold?: LogLevel) { + this.buffer = buffer ?? [] + this.threshold = threshold ?? LogLevel.ALL + } + + public appendMessage(msg: LogMessage): void { + if (this.threshold && msg.level < this.threshold) return + else this.buffer.push(msg) + } + + public clearBuffer(): void { + this.buffer.length = 0 + } +} diff --git a/src/console-log-appender.ts b/src/console-log-appender.ts index 36b77bf..e4e54eb 100644 --- a/src/console-log-appender.ts +++ b/src/console-log-appender.ts @@ -18,16 +18,12 @@ import { LogAppender } from './log-appender' * data for inspection in the browser's developer tools. */ export class ConsoleLogAppender implements LogAppender { - public threshold = LogLevel.ALL - public formatter: LogMessageFormatter = flattenMessage + public threshold: LogLevel + public formatter: LogMessageFormatter constructor(threshold?: LogLevel, formatter?: LogMessageFormatter) { - if (threshold) { - this.threshold = threshold - } - if (formatter) { - this.formatter = formatter - } + this.threshold = threshold ?? LogLevel.ALL + this.formatter = formatter ?? flattenMessage } public appendMessage(msg: LogMessage): void {