-
Notifications
You must be signed in to change notification settings - Fork 1
Logger
runtoolkit edited this page Apr 13, 2026
·
1 revision
Structured logger with log levels, an in-memory ring buffer, and a configurable sink.
import { Logger, LogLevel } from './src/log.js';
const log = new Logger({
maxSize: 256, // ring buffer size (oldest entries dropped)
minLevel: LogLevel.INFO, // minimum level to process
sink: null, // custom output function (see below)
});LogLevel.DEBUG // 0
LogLevel.INFO // 1
LogLevel.WARN // 2
LogLevel.ERROR // 3log.debug('msg', ...extra);
log.info('msg', ...extra);
log.warn('msg', ...extra);
log.error('msg', ...extra);Extra arguments are stringified and appended to the message with a space.
log.info('player joined', 'alice'); // → "[INFO] player joined alice"add() is an alias that accepts a level label string:
log.add('WARN', 'something happened');log.show(20); // → last N entries (default 20)
// → [{ level, levelCode, msg, timestamp }, ...]
log.clear(); // clear the bufferBy default, entries are written to console.log/warn/error/debug. Provide a custom sink to redirect output:
const log = new Logger({
sink: (entry) => {
myExternalLogger.write(entry.level, entry.msg);
}
});The sink receives: { level: string, levelCode: number, msg: string, timestamp: number }.
Errors thrown inside the sink are silently swallowed.
log.setDebug(true); // sets minLevel to DEBUG
log.setDebug(false); // sets minLevel back to INFO
log.setMinLevel(LogLevel.WARN); // only WARN and ERROR pass through