From ff05567e6b265c2ea2933b497ec4ffe26be93ad2 Mon Sep 17 00:00:00 2001 From: kjqwer <2990346238@qq.com> Date: Sun, 31 Aug 2025 19:00:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=89=93=E5=8C=85=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=A8=A1=E5=9D=97=E8=AF=86=E5=88=AB=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/utils/logger.js | 32 ++++++++++++++++++++++++++++---- scripts/create-portable.js | 3 ++- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/backend/utils/logger.js b/backend/utils/logger.js index e776176..26a0956 100644 --- a/backend/utils/logger.js +++ b/backend/utils/logger.js @@ -78,15 +78,33 @@ class Logger { this.level = options.level || LogLevel.INFO; this.enableConsole = options.enableConsole !== false; this.enableFile = options.enableFile || false; - this.logDir = options.logDir || path.join(__dirname, '../logs'); + + // 动态设置日志目录,避免pkg静态分析问题 + this.logDir = options.logDir || this._getLogDir(); + this.maxFileSize = options.maxFileSize || 10 * 1024 * 1024; // 10MB this.maxFiles = options.maxFiles || 5; this.enableColors = options.enableColors !== false; this.module = options.module || 'App'; - // 确保日志目录存在 - if (this.enableFile) { - this.ensureLogDir(); + // 延迟初始化,不在构造函数中创建目录 + this._initialized = false; + } + + /** + * 动态获取日志目录路径 + */ + _getLogDir() { + // 检测是否在pkg打包环境中运行 + const isPkg = process.pkg !== undefined; + + if (isPkg) { + // 在打包环境中,使用可执行文件所在目录 + return path.join(process.cwd(), 'logs'); + } else { + // 在开发环境中,使用项目根目录的logs文件夹 + // 使用相对路径避免pkg静态分析问题 + return 'logs'; } } @@ -147,6 +165,12 @@ class Logger { writeToFile(message) { if (!this.enableFile) return; + // 延迟初始化,只在第一次写入时创建目录 + if (!this._initialized) { + this.ensureLogDir(); + this._initialized = true; + } + const dateStr = this.getDateString(); const logFile = path.join(this.logDir, `${dateStr}.log`); diff --git a/scripts/create-portable.js b/scripts/create-portable.js index 26080bd..430e027 100644 --- a/scripts/create-portable.js +++ b/scripts/create-portable.js @@ -3,6 +3,7 @@ const path = require('path'); const { defaultLogger } = require('../backend/utils/logger'); // 创建logger实例 +const logger = defaultLogger.child('CreatePortable'); async function createPortable() { const distDir = path.join(__dirname, '..', 'dist'); @@ -99,7 +100,7 @@ pause logger.info('📦 可以将整个文件夹打包分发给用户'); } catch (error) { - console.error('❌ 创建便携版失败:', error); + logger.error('❌ 创建便携版失败', error); } }