UNPKG

@nosana/kit

Version:

Nosana KIT

64 lines 1.94 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 || this.level === 'none') return false; // Levels ordered from most verbose (debug) to least verbose (error) // If level is 'info', we log 'info', 'warn', 'error' (index >= 2) const levels = ['debug', 'info', 'warn', 'error']; const currentLevelIndex = levels.indexOf(this.level); const messageLevelIndex = levels.indexOf(messageLevel); return messageLevelIndex >= currentLevelIndex; } 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; } } //# sourceMappingURL=Logger.js.map