import { appConfig } from './config.js';
export var LogLevel;
(function (LogLevel) {
LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
LogLevel[LogLevel["INFO"] = 1] = "INFO";
LogLevel[LogLevel["WARN"] = 2] = "WARN";
LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
})(LogLevel || (LogLevel = {}));
const logLevelMap = {
debug: LogLevel.DEBUG,
info: LogLevel.INFO,
warn: LogLevel.WARN,
error: LogLevel.ERROR,
};
class Logger {
currentLevel;
constructor() {
this.currentLevel = logLevelMap[appConfig.server.logLevel] ?? LogLevel.INFO;
}
shouldLog(level) {
return level >= this.currentLevel;
}
formatMessage(level, message, meta) {
const timestamp = new Date().toISOString();
const baseMessage = `[${timestamp}] ${level.toUpperCase()}: ${message}`;
if (meta !== undefined) {
const metaString = typeof meta === 'object'
? JSON.stringify(meta, null, 2)
: String(meta);
return `${baseMessage}\n${metaString}`;
}
return baseMessage;
}
debug(message, meta) {
if (this.shouldLog(LogLevel.DEBUG)) {
// eslint-disable-next-line no-console
console.debug(this.formatMessage('debug', message, meta));
}
}
info(message, meta) {
if (this.shouldLog(LogLevel.INFO)) {
// eslint-disable-next-line no-console
console.info(this.formatMessage('info', message, meta));
}
}
warn(message, meta) {
if (this.shouldLog(LogLevel.WARN)) {
// eslint-disable-next-line no-console
console.warn(this.formatMessage('warn', message, meta));
}
}
error(message, meta) {
if (this.shouldLog(LogLevel.ERROR)) {
// eslint-disable-next-line no-console
console.error(this.formatMessage('error', message, meta));
}
}
setLevel(level) {
this.currentLevel = level;
}
}
export const logger = new Logger();
//# sourceMappingURL=logger.js.map