Introduce buffered console logger
This commit is contained in:
parent
6dab8c70a1
commit
d1791ff6be
6 changed files with 67 additions and 47 deletions
|
@ -24,4 +24,48 @@ export const consoleLogger: LoggerType = {
|
|||
console.log(...args);
|
||||
},
|
||||
};
|
||||
|
||||
export type BufferedLoggerType = LoggerType & {
|
||||
writeBufferInto(logger: LoggerType): void;
|
||||
};
|
||||
|
||||
export function createBufferedConsoleLogger(): BufferedLoggerType {
|
||||
type BufferEntryType = Readonly<{
|
||||
level: keyof LoggerType;
|
||||
args: Array<unknown>;
|
||||
}>;
|
||||
const buffer = new Array<BufferEntryType>();
|
||||
return {
|
||||
fatal(...args: Array<unknown>) {
|
||||
buffer.push({ level: 'fatal', args });
|
||||
console.error(...args);
|
||||
},
|
||||
error(...args: Array<unknown>) {
|
||||
buffer.push({ level: 'error', args });
|
||||
console.error(...args);
|
||||
},
|
||||
warn(...args: Array<unknown>) {
|
||||
buffer.push({ level: 'warn', args });
|
||||
console.warn(...args);
|
||||
},
|
||||
info(...args: Array<unknown>) {
|
||||
buffer.push({ level: 'info', args });
|
||||
console.info(...args);
|
||||
},
|
||||
debug(...args: Array<unknown>) {
|
||||
buffer.push({ level: 'debug', args });
|
||||
console.debug(...args);
|
||||
},
|
||||
trace(...args: Array<unknown>) {
|
||||
buffer.push({ level: 'trace', args });
|
||||
console.log(...args);
|
||||
},
|
||||
|
||||
writeBufferInto(output) {
|
||||
for (const { level, args } of buffer) {
|
||||
output[level](...args);
|
||||
}
|
||||
},
|
||||
};
|
||||
}
|
||||
/* eslint-enable no-console */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue