From 1a92762f82550ea5cbbd957f65e3f447c2f251c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E8=89=AF?= <841369634@qq.com> Date: Sun, 26 Jan 2025 11:51:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20util.log-or-consol?= =?UTF-8?q?e.js=EF=BC=8C=E6=96=B9=E4=BE=BF=E8=AE=B0=E5=BD=95=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/src/config/local-config-loader.js | 21 ++++-------- .../core/src/utils/util.log-or-console.js | 32 +++++++++++++++++++ packages/core/src/utils/util.logger.js | 15 ++++++--- packages/mitmproxy/src/json.js | 10 ++---- 4 files changed, 51 insertions(+), 27 deletions(-) create mode 100644 packages/core/src/utils/util.log-or-console.js diff --git a/packages/core/src/config/local-config-loader.js b/packages/core/src/config/local-config-loader.js index 699bbaf..9383ee2 100644 --- a/packages/core/src/config/local-config-loader.js +++ b/packages/core/src/config/local-config-loader.js @@ -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, diff --git a/packages/core/src/utils/util.log-or-console.js b/packages/core/src/utils/util.log-or-console.js new file mode 100644 index 0000000..ea92884 --- /dev/null +++ b/packages/core/src/utils/util.log-or-console.js @@ -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) + }, +} diff --git a/packages/core/src/utils/util.logger.js b/packages/core/src/utils/util.logger.js index c4de3ba..b3331b2 100644 --- a/packages/core/src/utils/util.logger.js +++ b/packages/core/src/utils/util.logger.js @@ -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 diff --git a/packages/mitmproxy/src/json.js b/packages/mitmproxy/src/json.js index 6ba5a78..8449294 100644 --- a/packages/mitmproxy/src/json.js +++ b/packages/mitmproxy/src/json.js @@ -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, }