2023-10-20 16:36:47 +05:30
|
|
|
import debug, { Debugger } from "debug";
|
|
|
|
|
|
2023-10-30 19:16:03 +05:30
|
|
|
const APP_NAME = "waku";
|
2023-10-20 16:36:47 +05:30
|
|
|
|
|
|
|
|
export class Logger {
|
|
|
|
|
private _info: Debugger;
|
|
|
|
|
private _warn: Debugger;
|
|
|
|
|
private _error: Debugger;
|
|
|
|
|
|
2024-07-19 15:58:17 +05:30
|
|
|
private static createDebugNamespace(level: string, prefix?: string): string {
|
2025-07-11 22:15:22 +02:00
|
|
|
return prefix ? `${APP_NAME}:${prefix}:${level}` : `${APP_NAME}:${level}`;
|
2023-10-20 16:36:47 +05:30
|
|
|
}
|
|
|
|
|
|
2024-07-19 15:58:17 +05:30
|
|
|
public constructor(prefix?: string) {
|
2023-10-23 13:26:35 +05:30
|
|
|
this._info = debug(Logger.createDebugNamespace("info", prefix));
|
|
|
|
|
this._warn = debug(Logger.createDebugNamespace("warn", prefix));
|
|
|
|
|
this._error = debug(Logger.createDebugNamespace("error", prefix));
|
2023-10-20 16:36:47 +05:30
|
|
|
}
|
|
|
|
|
|
2024-07-19 15:58:17 +05:30
|
|
|
public get info(): Debugger {
|
2023-10-20 16:36:47 +05:30
|
|
|
return this._info;
|
|
|
|
|
}
|
|
|
|
|
|
2024-07-19 15:58:17 +05:30
|
|
|
public get warn(): Debugger {
|
2023-10-20 16:36:47 +05:30
|
|
|
return this._warn;
|
|
|
|
|
}
|
|
|
|
|
|
2024-07-19 15:58:17 +05:30
|
|
|
public get error(): Debugger {
|
2023-10-20 16:36:47 +05:30
|
|
|
return this._error;
|
|
|
|
|
}
|
2023-10-23 13:26:35 +05:30
|
|
|
|
2024-07-19 15:58:17 +05:30
|
|
|
public log(level: "info" | "warn" | "error", ...args: unknown[]): void {
|
2025-07-11 22:15:22 +02:00
|
|
|
const logger = (this[level] as (...args: unknown[]) => void) || this.log;
|
2023-10-23 13:26:35 +05:30
|
|
|
logger(...args);
|
|
|
|
|
}
|
2023-10-20 16:36:47 +05:30
|
|
|
}
|