UNPKG

@nosana/kit

Version:

Nosana KIT

60 lines (59 loc) 1.63 kB
export class Logger { constructor(options) { this.level = 'info'; this.prefix = '[Nosana]'; this.enabled = true; if (options) { this.level = options.level || this.level; this.prefix = options.prefix || this.prefix; this.enabled = options.enabled ?? this.enabled; } } static getInstance(options) { if (!Logger.instance) { Logger.instance = new Logger(options); } return Logger.instance; } shouldLog(messageLevel) { if (!this.enabled) return false; const levels = ['debug', 'info', 'warn', 'error']; return levels.indexOf(messageLevel) >= levels.indexOf(this.level); } formatMessage(level, message) { return `${this.prefix} [${level.toUpperCase()}] ${message}`; } debug(message) { if (this.shouldLog('debug')) { console.debug(this.formatMessage('debug', message)); } } info(message) { if (this.shouldLog('info')) { console.info(this.formatMessage('info', message)); } } warn(message) { if (this.shouldLog('warn')) { console.warn(this.formatMessage('warn', message)); } } error(message) { if (this.shouldLog('error')) { console.error(this.formatMessage('error', message)); } } setLevel(level) { this.level = level; } setPrefix(prefix) { this.prefix = prefix; } enable() { this.enabled = true; } disable() { this.enabled = false; } }