type Levels = { log: boolean; info: boolean; warn: boolean; error: boolean; [key: string]: boolean; }; export class Logger { static Levels: Levels = { log: true, info: true, warn: true, error: true, }; static loggerObject: any = console; name = ''; constructor(name = 'unknown') { this.name = name; } callLog(fn: string, ...args: [any]) { Logger.Levels[fn] && (Logger.loggerObject)[fn](`[${this.name}]`, ...args); } log = (...args: [any]) => this.callLog('log', ...args); info = (...args: [any]) => this.callLog('info', ...args); warn = (...args: [any]) => this.callLog('warn', ...args); error = (...args: [any]) => this.callLog('error', ...args); } export default Logger;