export type LogLevel = 'ERROR' | 'WARNING' | 'INFO' | 'DEBUG'; export class Logger { public static get LOG_LEVELS(): Array { return ['ERROR', 'WARNING', 'INFO', 'DEBUG']; } private static levels: Array = this.LOG_LEVELS.slice(0, 3); public static set logLevel(logLevel: LogLevel) { Logger.levels = Logger.LOG_LEVELS.slice(0, Logger.LOG_LEVELS.indexOf(logLevel) + 1); } public static get logLevel(): LogLevel { return Logger.levels[Logger.levels.length - 1]; } public static debug(...data: any[]) { if (Logger.levels.includes('DEBUG')) console.log('[DEBUG]', ...data); } public static info(...data: any[]) { if (Logger.levels.includes('INFO')) console.log('[INFO]', ...data); } public static warn(...data: any[]) { if (Logger.levels.includes('WARNING')) console.warn('[WARN]', ...data); } public static error(...data: any[]) { if (Logger.levels.includes('ERROR')) console.error('[ERROR]', ...data); } }