|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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;
|
|
|
|
|
|
|