2023-10-30 19:16:03 +05:30

37 lines
896 B
TypeScript

import debug, { Debugger } from "debug";
const APP_NAME = "waku";
export class Logger {
private _info: Debugger;
private _warn: Debugger;
private _error: Debugger;
static createDebugNamespace(level: string, prefix?: string): string {
return prefix ? `${APP_NAME}:${level}:${prefix}` : `${APP_NAME}:${level}`;
}
constructor(prefix?: string) {
this._info = debug(Logger.createDebugNamespace("info", prefix));
this._warn = debug(Logger.createDebugNamespace("warn", prefix));
this._error = debug(Logger.createDebugNamespace("error", prefix));
}
get info(): Debugger {
return this._info;
}
get warn(): Debugger {
return this._warn;
}
get error(): Debugger {
return this._error;
}
log(level: "info" | "warn" | "error", ...args: unknown[]): void {
const logger = this[level] as (...args: unknown[]) => void;
logger(...args);
}
}