@agentkai/cli
Version:
AgentKai命令行界面
83 lines (82 loc) • 2.74 kB
JavaScript
import { Logger, LogLevel } from '@agentkai/core';
/**
* 处理日志配置的服务
*/
export class LoggerService {
constructor() {
Object.defineProperty(this, "logger", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
this.logger = new Logger('LoggerService');
}
/**
* 根据命令选项设置全局日志级别
* @param options 命令选项
*/
setLogLevelFromOptions(options) {
const previousLevel = Logger.getGlobalLogLevel();
if (options.debug) {
// debug选项优先级高于log-level选项
Logger.setGlobalLogLevel(LogLevel.DEBUG);
this.logger.info('设置日志级别为DEBUG');
}
else if (options.logLevel) {
// 根据--log-level选项设置日志级别
const logLevelMap = {
debug: LogLevel.DEBUG,
info: LogLevel.INFO,
warn: LogLevel.WARN,
error: LogLevel.ERROR,
silent: LogLevel.SILENT
};
const logLevel = logLevelMap[options.logLevel.toLowerCase()] || LogLevel.WARN;
Logger.setGlobalLogLevel(logLevel);
this.logger.info(`设置日志级别为${LogLevel[logLevel]}`);
}
// 设置日志格式选项
this.configureLoggerFormat(options);
return previousLevel;
}
/**
* 配置日志格式
* @param options 日志选项
*/
configureLoggerFormat(_options) {
const currentLogLevel = Logger.getGlobalLogLevel();
Logger.setGlobalOptions({
enableColors: true,
showTimestamp: currentLogLevel === LogLevel.DEBUG, // 只在调试模式下显示时间戳
showLogLevel: currentLogLevel !== LogLevel.SILENT, // 静默模式下不显示日志级别
showModule: currentLogLevel === LogLevel.DEBUG || currentLogLevel === LogLevel.INFO, // 仅在DEBUG或INFO模式下显示模块名
});
}
/**
* 恢复到指定的日志级别
* @param level 要恢复的日志级别
*/
restoreLogLevel(level) {
Logger.setGlobalLogLevel(level);
}
/**
* 简化日志输出,用于UI友好输出
*/
simplifyLoggerForUI() {
const originalOptions = Logger.getGlobalOptions();
Logger.setGlobalOptions({
...originalOptions,
showTimestamp: false,
showLogLevel: false,
showModule: false,
});
}
/**
* 恢复日志选项
* @param options 原始选项
*/
restoreLoggerOptions(options) {
Logger.setGlobalOptions(options);
}
}