"use strict"; const Level = require("./Level.js"); const normalizeLevel = require("./normalizeLevel.js"); class Logger { /** * Create a logger instance (创建日志实例) * @param name Logger name (日志名称) * @param options Logging options (日志选项) */ constructor(name, { level, appenders = [] } = {}) { this.name = name; this.appenders = /* @__PURE__ */ new Map(); this.context = {}; this._level = Level.INFO; if (level == null) { this.level = Level.INFO; } if (appenders) { appenders.forEach((appender) => { appender.setup(this); this.appenders.set(appender.name, appender); }); } } /** * Log level name (日志级别名称) */ get levelName() { return Level[this._level]; } /** * Log level (日志级别) */ get level() { return this._level; } /** * Set log level (设置日志级别) * @param level Log level (日志级别) */ set level(level) { const normalizedLevel = normalizeLevel(level); if (normalizedLevel !== void 0) { this._level = normalizedLevel; } } /** * Add context (添加上下文) * @param key Context key (上下文键) * @param value Context value (上下文值) */ addContext(key, value) { this.context[key] = value; } /** * Remove context (移除上下文) * @param key Context key (上下文键) */ removeContext(key) { delete this.context[key]; } /** * Clear context (清除上下文) */ clearContext() { this.context = {}; } /** * Dispose all appenders (关闭所有appenders) */ dispose() { const promises = []; this.appenders.forEach((appender) => { promises.push(appender.close()); }); return Promise.allSettled(promises); } /** * Log a message of level TRACE (记录TRACE级别的日志) * @param args Message arguments (消息参数) */ trace(...args) { this.log(Level.TRACE, args); } /** * Log a message of level DEBUG (记录DEBUG级别的日志) * @param args Message arguments (消息参数) */ debug(...args) { this.log(Level.DEBUG, args); } /** * Log a message of level INFO (记录INFO级别的日志) * @param args Message arguments (消息参数) */ info(...args) { this.log(Level.INFO, args); } /** * Log a message of level WARN (记录WARN级别的日志) * @param args Message arguments (消息参数) */ warn(...args) { this.log(Level.WARN, args); } /** * Log a message of level ERROR (记录ERROR级别的日志) * @param args Message arguments (消息参数) */ error(...args) { this.log(Level.ERROR, args); } /** * Log a message of level FATAL (记录FATAL级别的日志) * @param args Message arguments (消息参数) */ fatal(...args) { this.log(Level.FATAL, args); } /** * Create a log event (创建日志事件) * @param level Log level (日志级别) * @param message Message (消息) * @returns Log event (日志事件) */ createEvent(level, message) { return { level, levelName: Level[level], message, timestamp: /* @__PURE__ */ new Date(), loggerName: this.name, context: this.context }; } /** * Log a message (记录日志) * @param level Log level (日志级别) * @param message Content (内容) */ log(level, message) { if (level > this._level) { return; } const event = this.createEvent(level, message); this.appenders.forEach((appender) => { try { appender.write(event); } catch (err) { console.error("Appender error:", err); } }); } } module.exports = Logger;