kit.program/kit/src/init.js
2025-03-13 15:27:23 +08:00

100 lines
3.1 KiB
JavaScript

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
})
}