feat: 添加 util.log-or-console.js,方便记录日志。

pull/445/head
王良 2025-01-26 11:51:38 +08:00
parent 3eb49e280c
commit 1a92762f82
4 changed files with 51 additions and 27 deletions

View File

@ -3,12 +3,7 @@ const path = require('node:path')
const lodash = require('lodash')
const jsonApi = require('@docmirror/mitmproxy/src/json')
const mergeApi = require('../merge')
let log = console // 默认使用console日志系统初始化完成后设置为 logger
function setLogger (logger) {
log = logger
jsonApi.setLogger(logger)
}
const logOrConsole = require('../utils/util.log-or-console')
function getUserBasePath (autoCreate = true) {
const userHome = process.env.USERPROFILE || process.env.HOME || '/'
@ -24,12 +19,12 @@ function getUserBasePath (autoCreate = true) {
function loadConfigFromFile (configFilePath) {
if (configFilePath == null) {
log.warn('配置文件地址为空')
logOrConsole.warn('配置文件地址为空')
return {}
}
if (!fs.existsSync(configFilePath)) {
log.info('配置文件不存在:', configFilePath)
logOrConsole.info('配置文件不存在:', configFilePath)
return {} // 文件不存在,返回空配置
}
@ -38,17 +33,17 @@ function loadConfigFromFile (configFilePath) {
try {
configStr = fs.readFileSync(configFilePath)
} catch (e) {
log.error('读取配置文件失败:', configFilePath, ', error:', e)
logOrConsole.error('读取配置文件失败:', configFilePath, ', error:', e)
return {}
}
// 解析配置文件
try {
const config = jsonApi.parse(configStr)
log.info('读取配置文件成功:', configFilePath)
logOrConsole.info('读取配置文件成功:', configFilePath)
return config
} catch (e) {
log.error(`解析配置文件失败,文件内容格式不正确,文件路径: ${configFilePath},文件内容:${configStr}error:`, e)
logOrConsole.error(`解析配置文件失败,文件内容格式不正确,文件路径: ${configFilePath},文件内容:${configStr}error:`, e)
return {}
}
}
@ -111,13 +106,11 @@ function getConfigFromFiles (userConfig, defaultConfig) {
// 删除为null及[delete]的项
mergeApi.deleteNullItems(merged)
log.info('加载及合并远程配置完成')
logOrConsole.info('加载及合并远程配置完成')
return merged
}
module.exports = {
setLogger,
getUserBasePath,
loadConfigFromFile,

View File

@ -0,0 +1,32 @@
let log = console
function _doLog (fun, args) {
if (log === console) {
log[fun](...[`[${fun.toUpperCase()}]`, ...args])
} else {
log[fun](...args)
}
}
module.exports = {
setLogger (logger) {
log = logger
},
debug () {
// eslint-disable-next-line prefer-rest-params
_doLog('debug', arguments)
},
info () {
// eslint-disable-next-line prefer-rest-params
_doLog('info', arguments)
},
warn () {
// eslint-disable-next-line prefer-rest-params
_doLog('warn', arguments)
},
error () {
// eslint-disable-next-line prefer-rest-params
_doLog('error', arguments)
},
}

View File

@ -1,6 +1,6 @@
const path = require('node:path')
const log4js = require('log4js')
const configLoader = require('../config/local-config-loader')
const logOrConsole = require('./util.log-or-console')
const configFromFiles = require('../config/index').configFromFiles
// 日志级别
@ -35,6 +35,11 @@ let log = null
// 设置一组日志配置
function log4jsConfigure (categories) {
if (log != null) {
log.error('当前进程已经设置过日志配置,无法再设置更多日志配置:', categories)
return
}
const config = {
appenders: {
std: { type: 'stdout' },
@ -53,9 +58,9 @@ function log4jsConfigure (categories) {
// 拿第一个日志类型来logger并设置到log变量中
log = log4js.getLogger(categories[0])
configLoader.setLogger(log)
logOrConsole.setLogger(log)
log.info('设置日志配置完成:', config)
log.info(`设置日志配置完成进程ID: ${process.pid},配置:`, config)
}
module.exports = {
@ -77,8 +82,8 @@ module.exports = {
} else {
if (log == null) {
log4jsConfigure([category])
} else {
log.error(`当前进程已经设置过日志配置,无法设置 "${category}" 的配置,先临时返回 "${log.category}" 的 log 进行日志记录。如果与其他类型的日志在同一进程中写入,请参照 core 和 gui 一起配置`)
} else if (category !== log.category) {
log.error(`当前进程已经设置过日志配置,无法设置 "${category}" 的配置,先临时返回 "${log.category}" 的 log 进行日志记录。如果与其他类型的日志在同一进程中写入,请参照 core 和 gui 一起配置`)
}
return log

View File

@ -1,13 +1,9 @@
const logOrConsole = require('@docmirror/dev-sidecar/src/utils/util.log-or-console')
let JSON5 = require('json5')
if (JSON5.default) {
JSON5 = JSON5.default
}
let log = console // 默认使用console日志系统初始化完成后设置为 logger
function setLogger (logger) {
log = logger
}
module.exports = {
parse (str, defaultValue) {
if (str == null || str.length < 2) {
@ -20,7 +16,7 @@ module.exports = {
try {
return JSON5.parse(str)
} catch (e) {
log.error(`JSON5解析失败: ${e.message}JSON内容:\r\n`, str)
logOrConsole.error(`JSON5解析失败: ${e.message}JSON内容:\r\n`, str)
return defaultValue
}
} else {
@ -43,6 +39,4 @@ module.exports = {
}
}
},
setLogger,
}