Add BufferLogAppender
Sometimes it is useful to capture log messages in a way that is easy for the running program to introspect or manually handle. *BufferLogAppender* captures the logs in a simple array. Be careful, there is no default flush/clear mechanism that runs automatically. Users of BufferLogAppender should take care to render/handle log messages and periodically call `clearBuffer` on the *BufferLogAppender* instance to avoid the buffer array growing without limit.
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
import type {
|
||||
LogLevel,
|
||||
LogMessage
|
||||
} from './log-message'
|
||||
|
||||
export class BufferLogAppender implements LogAppender {
|
||||
public threshold = LogLevel.ALL
|
||||
public buffer: LogMessage[]
|
||||
|
||||
constructor(buffer: LogMessage[], threshold?: LogLevel) {
|
||||
this.buffer = buffer
|
||||
|
||||
if (threshold) {
|
||||
this.threshold = threshold
|
||||
}
|
||||
}
|
||||
|
||||
public appendMessage(msg: LogMessage): void {
|
||||
if (this.threshold && msg.level < this.threshold) return
|
||||
else buffer.push(msg)
|
||||
}
|
||||
|
||||
public clearBuffer(): void {
|
||||
this.buffer.length = 0
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user