@obsidize/logger
Version:
A tiny javascript logging library
49 lines (48 loc) • 1.52 kB
JavaScript
import { LogEventGuard } from './log-event-guard';
import { LogLevel } from './log-level';
/**
* Common logging interface to be used on a per-module basis.
* Can be configured to suppress events based on a custom filter,
* or disabled entirely.
*
* Events produced by an instance of this class will be
* passed along to the assigned interceptor for further
* processing / outlet handling.
*/
export class Logger extends LogEventGuard {
constructor(tag, interceptor) {
super();
this.tag = tag;
this.interceptor = interceptor;
}
verbose(message, ...params) {
this.emit(LogLevel.VERBOSE, message, params);
}
trace(message, ...params) {
this.emit(LogLevel.TRACE, message, params);
}
debug(message, ...params) {
this.emit(LogLevel.DEBUG, message, params);
}
log(message, ...params) {
this.emit(LogLevel.DEBUG, message, params);
}
info(message, ...params) {
this.emit(LogLevel.INFO, message, params);
}
warn(message, ...params) {
this.emit(LogLevel.WARN, message, params);
}
error(message, ...params) {
this.emit(LogLevel.ERROR, message, params);
}
fatal(message, ...params) {
this.emit(LogLevel.FATAL, message, params);
}
emit(level, message, params, timestamp) {
const ev = this.interceptor.createEvent(level, this.tag, message, params, timestamp);
if (this.test(ev)) {
this.interceptor.interceptEvent(ev);
}
}
}