/* eslint-disable @typescript-eslint/no-explicit-any */ export enum LogLevel { DISABLED = -1, DEBUG = 0, INFO = 1, WARN = 2, ERROR = 3 } export default class Log { private static level: number = 0 private static enabled: boolean = false public static setLevel(level: LogLevel): void { if (this.enabled && level === LogLevel.DISABLED) { Log.disable() } else { if (!Log.enabled) { Log.enable() } Log.level = level } } public static enable(): void { console.log('-- Logging is now enabled --') Log.enabled = true } public static disable(): void { console.log('-- Logging is now disabled --') Log.enabled = false } public static getLevel(): LogLevel { return Log.level } public static debug(...args: any[]): void { if (Log.enabled && Log.level <= LogLevel.DEBUG) { console.debug('DEBUG: ', ...args) } } public static info(...args: any[]): void { if (Log.enabled && Log.level <= LogLevel.INFO) { console.info('INFO: ', ...args) } } public static warn(...args: any[]): void { if (Log.enabled && Log.level <= LogLevel.WARN) { console.warn('WARN: ', ...args) } } public static error(...args: any[]): void { if (Log.enabled && Log.level <= LogLevel.ERROR) { console.error('ERROR: ', ...args) } } }