@nosana/kit
Version:
Nosana KIT
64 lines • 1.94 kB
JavaScript
export class Logger {
constructor(options) {
this.level = 'info';
this.prefix = '[Nosana]';
this.enabled = true;
if (options) {
this.level = options.level || this.level;
this.prefix = options.prefix || this.prefix;
this.enabled = options.enabled ?? this.enabled;
}
}
static getInstance(options) {
if (!Logger.instance) {
Logger.instance = new Logger(options);
}
return Logger.instance;
}
shouldLog(messageLevel) {
if (!this.enabled || this.level === 'none')
return false;
// Levels ordered from most verbose (debug) to least verbose (error)
// If level is 'info', we log 'info', 'warn', 'error' (index >= 2)
const levels = ['debug', 'info', 'warn', 'error'];
const currentLevelIndex = levels.indexOf(this.level);
const messageLevelIndex = levels.indexOf(messageLevel);
return messageLevelIndex >= currentLevelIndex;
}
formatMessage(level, message) {
return `${this.prefix} [${level.toUpperCase()}] ${message}`;
}
debug(message) {
if (this.shouldLog('debug')) {
console.debug(this.formatMessage('debug', message));
}
}
info(message) {
if (this.shouldLog('info')) {
console.info(this.formatMessage('info', message));
}
}
warn(message) {
if (this.shouldLog('warn')) {
console.warn(this.formatMessage('warn', message));
}
}
error(message) {
if (this.shouldLog('error')) {
console.error(this.formatMessage('error', message));
}
}
setLevel(level) {
this.level = level;
}
setPrefix(prefix) {
this.prefix = prefix;
}
enable() {
this.enabled = true;
}
disable() {
this.enabled = false;
}
}
//# sourceMappingURL=Logger.js.map