Files
SnowLuma/.pnpm-store/v11/files/89/664b80ac0d0e54a0a1f9a41d6624be972d519fd81cfc39a486f97ff804abb42a162ab75abfaf44259be796996d245f914a4def33a0e25a0012ca54a737746f
T
TanTan 2a69b23b47
Dev Build / cleanup (push) Canceled after 0s
Dev Build / typecheck (push) Canceled after 0s
Dev Build / build (linux-arm64, ubuntu-24.04-arm, linux-arm64) (push) Canceled after 0s
Dev Build / build (linux-x64, ubuntu-latest, linux-x64) (push) Canceled after 0s
Dev Build / build (win-x64, windows-latest, win32-x64) (push) Canceled after 0s
Dev Build / dispatch-dev-docker (push) Canceled after 0s
docs: 仓库链接指向本镜像仓库
2026-11-13 09:27:07 +08:00

107 lines
2.6 KiB
Plaintext

import Level from "./Level.mjs";
import Logger from "./Logger.mjs";
import normalizeLevel from "./normalizeLevel.mjs";
class LogFactory {
/**
* Constructor (构造函数)
* @param config Configuration options (配置选项)
*/
constructor(config) {
this.loggers = /* @__PURE__ */ new Map();
this.LoggerClass = Logger;
this.defaultLevel = Level.INFO;
this.appenders = [];
this.configure(config);
}
/**
* Get the default log level (获取或设置默认日志级别)
*/
get level() {
return this.defaultLevel;
}
/**
* Get the default log level name (获取或设置默认日志级别名称)
*/
get levelName() {
return Level[this.defaultLevel];
}
/**
* Update the default log level (更新默认日志级别)
* @param level Log level (日志级别)
* @param updateCachedLoggers Whether to update the cached loggers (是否更新缓存的日志器)
* @returns Update level success if true (如果为 true 表示更新成功)
*/
updateLevel(level, updateCachedLoggers) {
const normalizedLevel = normalizeLevel(level);
const isValidLevel = normalizedLevel !== void 0;
if (isValidLevel) {
this.defaultLevel = normalizedLevel;
if (updateCachedLoggers !== false) {
this.loggers.forEach((logger) => {
logger.level = normalizedLevel;
});
}
}
return isValidLevel;
}
/**
* Configure the log factory (配置日志工厂)
* @param param Configuration options (配置选项)
*/
configure({
LoggerClass,
level,
appenders
} = {}) {
if (LoggerClass) {
this.LoggerClass = LoggerClass;
}
if (level) {
this.updateLevel(level, false);
}
if (appenders) {
this.appenders = appenders;
}
}
/**
* Get a logger instance (获取日志实例)
* @param name Logger name (日志名称)
*/
getLogger(name) {
let logger = this.loggers.get(name);
if (!logger) {
const { LoggerClass } = this;
logger = new LoggerClass(name, {
level: this.defaultLevel,
appenders: this.appenders
});
this.loggers.set(name, logger);
}
return logger;
}
/**
* Clear the logger cache (清除日志缓存)
* @param name Logger name (日志名称)
*/
clear(name) {
if (name) {
this.loggers.delete(name);
} else {
this.loggers.clear();
}
}
/**
* Dispose the log factory (销毁日志工厂)
*/
dispose() {
const promises = [];
this.loggers.forEach((logger) => {
promises.push(logger.dispose());
});
return Promise.allSettled(promises);
}
}
export {
LogFactory as default
};