Files
SnowLuma/.pnpm-store/v11/files/56/c8a52646c5a53ccc68c843a0261b74a8d37903c6c0f88fb2f8bb48291982fb3107f24402a2a912b37be6e7a8f916eb3c35b75f57ade04eeaa5f4feabf2b88c
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

106 lines
2.6 KiB
Plaintext

"use strict";
const Level = require("./Level.js");
const Logger = require("./Logger.js");
const normalizeLevel = require("./normalizeLevel.js");
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);
}
}
module.exports = LogFactory;