mirror of
https://github.com/ajayyy/SponsorBlockServer.git
synced 2025-12-08 12:37:00 +03:00
90 lines
1.9 KiB
TypeScript
90 lines
1.9 KiB
TypeScript
import {config} from '../config';
|
|
|
|
const enum LogLevel {
|
|
ERROR = "ERROR",
|
|
WARN = "WARN",
|
|
INFO = "INFO",
|
|
DEBUG = "DEBUG"
|
|
}
|
|
|
|
const colors = {
|
|
Reset: "\x1b[0m",
|
|
Bright: "\x1b[1m",
|
|
Dim: "\x1b[2m",
|
|
Underscore: "\x1b[4m",
|
|
Blink: "\x1b[5m",
|
|
Reverse: "\x1b[7m",
|
|
Hidden: "\x1b[8m",
|
|
|
|
FgBlack: "\x1b[30m",
|
|
FgRed: "\x1b[31m",
|
|
FgGreen: "\x1b[32m",
|
|
FgYellow: "\x1b[33m",
|
|
FgBlue: "\x1b[34m",
|
|
FgMagenta: "\x1b[35m",
|
|
FgCyan: "\x1b[36m",
|
|
FgWhite: "\x1b[37m",
|
|
|
|
BgBlack: "\x1b[40m",
|
|
BgRed: "\x1b[41m",
|
|
BgGreen: "\x1b[42m",
|
|
BgYellow: "\x1b[43m",
|
|
BgBlue: "\x1b[44m",
|
|
BgMagenta: "\x1b[45m",
|
|
BgCyan: "\x1b[46m",
|
|
BgWhite: "\x1b[47m",
|
|
};
|
|
|
|
|
|
class Logger {
|
|
private _settings = {
|
|
ERROR: true,
|
|
WARN: true,
|
|
INFO: false,
|
|
DEBUG: false,
|
|
};
|
|
|
|
constructor() {
|
|
if (config.mode === 'development') {
|
|
this._settings.INFO = true;
|
|
this._settings.DEBUG = true;
|
|
} else if (config.mode === 'test') {
|
|
this._settings.WARN = false;
|
|
}
|
|
}
|
|
|
|
error(str: string) {
|
|
this.log(LogLevel.ERROR, str);
|
|
}
|
|
warn(str: string) {
|
|
this.log(LogLevel.WARN, str);
|
|
}
|
|
info(str: string) {
|
|
this.log(LogLevel.INFO, str);
|
|
}
|
|
debug(str: string) {
|
|
this.log(LogLevel.DEBUG, str);
|
|
}
|
|
|
|
private log(level: LogLevel, str: string) {
|
|
if (!this._settings[level]) {
|
|
return;
|
|
}
|
|
|
|
let color = colors.Bright;
|
|
if (level === LogLevel.ERROR) color = colors.FgRed;
|
|
if (level === LogLevel.WARN) color = colors.FgYellow;
|
|
|
|
let levelStr = level.toString();
|
|
if (levelStr.length === 4) {
|
|
levelStr += " "; // ensure logs are aligned
|
|
}
|
|
console.log(colors.Dim, `${levelStr} ${new Date().toISOString()}: `, color, str, colors.Reset);
|
|
}
|
|
}
|
|
|
|
const loggerInstance = new Logger();
|
|
export {
|
|
loggerInstance as Logger
|
|
};
|