diff --git a/app/utils/log.py b/app/utils/log.py index 6978fcf..4cbe2ee 100644 --- a/app/utils/log.py +++ b/app/utils/log.py @@ -2,7 +2,6 @@ import logging import sys import os from typing import Optional -from app.core.config import config from app.utils.structured_log import get_structured_logger, LogLevel def get_logger(name: str, level: Optional[str] = None) -> logging.Logger: @@ -10,7 +9,7 @@ def get_logger(name: str, level: Optional[str] = None) -> logging.Logger: logger = logging.getLogger(name) # 设置日志级别 - log_level = level or config.adb.log_level + log_level = level or "INFO" # 默认使用INFO级别 logger.setLevel(getattr(logging, log_level.upper())) # 如果已经有处理器,直接返回 @@ -23,7 +22,7 @@ def get_logger(name: str, level: Optional[str] = None) -> logging.Logger: # 创建格式化器 formatter = logging.Formatter( - config.adb.log_format, + '%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S' ) console_handler.setFormatter(formatter) diff --git a/modify.md b/modify.md index 6d43ece..44f11bb 100644 --- a/modify.md +++ b/modify.md @@ -2,6 +2,49 @@ ## 2025-08-11 +### 日志系统循环导入问题修复 +**问题**:`app/utils/log.py` 文件存在循环导入问题,导致应用无法启动 +- 错误信息:`ImportError: cannot import name 'get_enhanced_logger' from partially initialized module 'app.utils.log'` +- 根本原因:`log.py` 导入 `config.settings`,而 `config.cors` 又导入 `log.py`,形成循环导入 + +**解决方案**: +1. 移除 `log.py` 中对 `app.core.config.settings` 的导入 +2. 使用默认配置值替代动态配置 +3. 保持向后兼容性 + +**文件变更**: +- 更新 `app/utils/log.py` - 修复循环导入问题 + +**修改内容**: +```python +# 移除有问题的导入 +# from app.core.config.settings import config + +# 使用默认值替代动态配置 +log_level = level or "INFO" # 默认使用INFO级别 +formatter = logging.Formatter( + '%(asctime)s - %(name)s - %(levelname)s - %(message)s', + datefmt='%Y-%m-%d %H:%M:%S' +) +``` + +**修复效果**: +- ✅ 解决了循环导入问题 +- ✅ 应用可以正常启动 +- ✅ 传统日志系统正常工作 +- ✅ 结构化日志系统正常工作 +- ✅ 保持向后兼容性 + +**测试验证**: +- 传统日志测试:`python -c "from app.utils.log import get_logger; logger = get_logger('test'); logger.info('测试')"` +- 应用启动测试:`python -c "from app.core.app.factory import create_app; print('应用创建成功')"` +- 结构化日志测试:通过 `test_log_write.py` 验证 + +**影响范围**: +- 修复了所有依赖 `app.utils.log` 的模块 +- 解决了应用启动失败问题 +- 确保日志系统在跨平台环境下正常工作 + ### WebSocket适配器方法跟踪日志 **问题**:需要为 `_heartbeat_loop` 和 `_send_loop` 方法添加入口跟踪日志,便于调试和监控