route-claudecode
Version:
Advanced routing and transformation system for Claude Code outputs to multiple AI providers
78 lines • 3.12 kB
JavaScript
;
/**
* 日志管理器 - 全局日志实例管理
* 提供单例模式的日志器管理
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.UnifiedLogger = exports.loggerManager = void 0;
exports.getLogger = getLogger;
exports.setDefaultPort = setDefaultPort;
const unified_logger_1 = require("./unified-logger");
Object.defineProperty(exports, "UnifiedLogger", { enumerable: true, get: function () { return unified_logger_1.UnifiedLogger; } });
class LoggerManager {
loggers = new Map();
defaultPort = null; // 🔧 修复硬编码:不设置默认端口,强制明确指定
getLogger(port) {
// 🔧 零硬编码原则:必须明确指定端口,不允许fallback
if (!port && !this.defaultPort) {
throw new Error('Port must be explicitly specified - no hardcoded defaults allowed. Use setDefaultPort() first or provide port parameter.');
}
const targetPort = port || this.defaultPort;
if (!this.loggers.has(targetPort)) {
// 环境变量和命令行参数控制的调试配置
const isDebugMode = process.env.RCC_DEBUG === 'true' ||
process.env.DEBUG === 'true' ||
process.argv.includes('--debug');
const isVerboseMode = process.env.RCC_VERBOSE === 'true' ||
process.argv.includes('--verbose');
// 调试信息:记录logger创建
if (isDebugMode) {
console.log(`[LoggerManager] Creating logger for port ${targetPort} (requested: ${port}, default: ${this.defaultPort})`);
}
const logger = new unified_logger_1.UnifiedLogger({
port: targetPort,
logLevel: isVerboseMode ? 'debug' : (isDebugMode ? 'debug' : 'info'), // debug模式使用debug级别
enableConsole: isDebugMode || isVerboseMode,
enableFile: true
});
this.loggers.set(targetPort, logger);
}
return this.loggers.get(targetPort);
}
setDefaultPort(port) {
this.defaultPort = port;
}
hasLogger(port) {
return this.loggers.has(port);
}
async removeLogger(port) {
const logger = this.loggers.get(port);
if (logger) {
await logger.shutdown();
this.loggers.delete(port);
}
}
getActivePorts() {
return Array.from(this.loggers.keys());
}
async cleanupAll() {
const promises = Array.from(this.loggers.values()).map(logger => logger.cleanup());
await Promise.all(promises);
}
async shutdownAll() {
const promises = Array.from(this.loggers.values()).map(logger => logger.shutdown());
await Promise.all(promises);
this.loggers.clear();
}
}
// 全局单例
const loggerManager = new LoggerManager();
exports.loggerManager = loggerManager;
// 导出便捷函数
function getLogger(port) {
return loggerManager.getLogger(port);
}
function setDefaultPort(port) {
loggerManager.setDefaultPort(port);
}
//# sourceMappingURL=logger-manager.js.map