@ingridsandev/chatbot-widget
Version:
A framework-agnostic chatbot widget using Web Components
53 lines (44 loc) • 1.42 kB
JavaScript
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();