Files
SnowLuma/.pnpm-store/v11/files/f2/53c4a7b924ccf16f4de68b3112b25d77a1463da084723da0317300e7df27e59513bd6cf5e99dcb4793f4d6bbb88a58670f77a40c615b6cb6f90bce7f24cedf
T
TanTan 2a69b23b47
Dev Build / cleanup (push) Waiting to run
Dev Build / typecheck (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:27:07 +08:00

156 lines
3.6 KiB
Plaintext

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