|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Logger { |
|
|
constructor() { |
|
|
this.enabled = true; |
|
|
this.level = this.getLogLevel(); |
|
|
this.prefix = ''; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
getLogLevel() { |
|
|
if (typeof localStorage === 'undefined') return 'info'; |
|
|
|
|
|
|
|
|
return localStorage.getItem('logLevel') || 'info'; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
setLevel(level) { |
|
|
this.level = level; |
|
|
if (typeof localStorage !== 'undefined') { |
|
|
localStorage.setItem('logLevel', level); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
shouldLog(level) { |
|
|
if (!this.enabled) return false; |
|
|
if (this.level === 'silent') return false; |
|
|
|
|
|
const levels = ['debug', 'info', 'warn', 'error']; |
|
|
const currentIndex = levels.indexOf(this.level); |
|
|
const checkIndex = levels.indexOf(level); |
|
|
|
|
|
return checkIndex >= currentIndex; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
formatMessage(prefix, message) { |
|
|
return prefix ? `[${prefix}] ${message}` : message; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
debug(prefix, ...args) { |
|
|
if (!this.shouldLog('debug')) return; |
|
|
const message = this.formatMessage(prefix, args[0]); |
|
|
console.debug(message, ...args.slice(1)); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
info(prefix, ...args) { |
|
|
if (!this.shouldLog('info')) return; |
|
|
const message = this.formatMessage(prefix, args[0]); |
|
|
console.log(message, ...args.slice(1)); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
warn(prefix, ...args) { |
|
|
if (!this.shouldLog('warn')) return; |
|
|
const message = this.formatMessage(prefix, args[0]); |
|
|
console.warn(message, ...args.slice(1)); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
error(prefix, ...args) { |
|
|
if (!this.shouldLog('error')) return; |
|
|
const message = this.formatMessage(prefix, args[0]); |
|
|
console.error(message, ...args.slice(1)); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
disable() { |
|
|
this.enabled = false; |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
enable() { |
|
|
this.enabled = true; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
const logger = new Logger(); |
|
|
|
|
|
|
|
|
if (typeof window !== 'undefined') { |
|
|
window.logger = logger; |
|
|
window.setLogLevel = (level) => logger.setLevel(level); |
|
|
} |
|
|
|
|
|
export default logger; |
|
|
|
|
|
|