UNPKG

@ingridsandev/chatbot-widget

Version:

A framework-agnostic chatbot widget using Web Components

53 lines (44 loc) 1.42 kB
class Logger { constructor(prefix = 'ChatbotWidget') { this.prefix = prefix; this.logLevel = this.getLogLevel(); } getLogLevel() { if (typeof window !== 'undefined' && window.localStorage) { const level = localStorage.getItem('chatbot-log-level'); if (level) return level; } return process.env.NODE_ENV === 'development' ? 'debug' : 'warn'; } formatMessage(level, message, ...args) { const timestamp = new Date().toISOString(); return [`[${timestamp}] ${this.prefix} [${level.toUpperCase()}]:`, message, ...args]; } debug(message, ...args) { if (this.shouldLog('debug')) { console.debug(...this.formatMessage('debug', message, ...args)); } } info(message, ...args) { if (this.shouldLog('info')) { console.info(...this.formatMessage('info', message, ...args)); } } warn(message, ...args) { if (this.shouldLog('warn')) { console.warn(...this.formatMessage('warn', message, ...args)); } } error(message, ...args) { if (this.shouldLog('error')) { console.error(...this.formatMessage('error', message, ...args)); } } shouldLog(level) { const levels = ['debug', 'info', 'warn', 'error']; const currentLevelIndex = levels.indexOf(this.logLevel); const messageLevelIndex = levels.indexOf(level); return messageLevelIndex >= currentLevelIndex; } } export default new Logger();