murmuraba
Version:
Real-time audio noise reduction with advanced chunked processing for web applications
51 lines (50 loc) • 1.51 kB
JavaScript
export class Logger {
constructor(prefix = '[Murmuraba]') {
this.level = 'info';
this.prefix = prefix;
}
setLevel(level) {
this.level = level;
}
setLogHandler(handler) {
this.onLog = handler;
}
shouldLog(level) {
const levels = ['none', 'error', 'warn', 'info', 'debug'];
const currentIndex = levels.indexOf(this.level);
const messageIndex = levels.indexOf(level);
return currentIndex > 0 && messageIndex <= currentIndex;
}
log(level, message, data) {
if (!this.shouldLog(level))
return;
const timestamp = new Date().toISOString();
const formattedMessage = `${this.prefix} [${timestamp}] [${level.toUpperCase()}] ${message}`;
if (this.onLog) {
this.onLog(level, formattedMessage, data);
}
else {
const logMethod = level === 'error' ? console.error :
level === 'warn' ? console.warn :
console.log;
if (data !== undefined) {
logMethod(formattedMessage, data);
}
else {
logMethod(formattedMessage);
}
}
}
error(message, data) {
this.log('error', message, data);
}
warn(message, data) {
this.log('warn', message, data);
}
info(message, data) {
this.log('info', message, data);
}
debug(message, data) {
this.log('debug', message, data);
}
}