const config = require('./config') const Context = require("./context") // const layout = log4js.layouts.patternLayout('%m') if ( ! global.$inited ) { init() } else { // 不再初始化 } function init(){ global.$inited = true const package = require("../package.json") global.$version = package.version // 上下文模块 global.$context = new Context(); // 载入日志 const log4js = require('log4js'); log4js.configure({ appenders: { console: { type: 'stdout' , level: "info", layout: { type: "pattern", pattern: "%m", },}, }, categories: { default: { appenders: ['console'], level: 'debug' }, } }); global.$logger = log4js.getLogger(); // 载入配置 global.$sConfig = config.SystemConfig // 重载版本号 try { global.$version = fs.readFileSync($sConfig.getLocalKitPath() + "/version", "UTF-8") }catch ( e ) {} let logPath = global.$sConfig.getLogPath(); global.$context.standalone("uConfig", function (){ return new config.UserConfig( $sConfig.getUserConfigFilePath() ) }) log4js.addLayout('customLayout', function(config) { return function(logEvent) { const now = new Date(logEvent.startTime) let time = now.toLocaleTimeString(); time += "." + now.getMilliseconds().toString().padStart(3, '0'); const level = "" + logEvent.level; const categoryName = logEvent.categoryName; const message = logEvent.data[0]; if ( message && message.startsWith && message.startsWith("\r") ) { return message; } let logMessage = `${time} ${level} - ${message}`; // Add color to log message based on log level switch (level) { case 'INFO': logMessage = `\x1b[32m${logMessage}\x1b[0m`; // Green color for INFO log level break; case 'WARN': logMessage = `\x1b[33m${logMessage}\x1b[0m`; // Yellow color for WARN log level break; case 'ERROR': logMessage = `\x1b[31m${logMessage}\x1b[0m`; // Red color for ERROR log level break; default: break; } return logMessage; }; }); // 重置日志配置 log4js.configure({ appenders: { console: { type: 'console' , level: "info", layout: { type: 'customLayout' }}, file: { type: 'dateFile', filename: logPath + '/kit.log', "pattern": "yyyy-MM-dd", "compress": true , alwaysIncludePattern : true, keepFileExt : true, numBackups : 7} }, categories: { default: { appenders: ['console', 'file'], level: 'debug' }, } }); // 注册:远程仓库 global.$context.standalone("remote", async function (){ const Remote = require("./remote") const remote = new Remote(); await remote.init() return remote }) }