From b374d3f2b71bc189f72a62f36e810f156de55437 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 12 Aug 2025 09:33:08 +0800 Subject: [PATCH] =?UTF-8?q?log=20=E8=AE=B0=E5=BD=95=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modify.md | 45 +++++++++++++++++++++++++++++++++++++++++ test_enhanced_logger.py | 42 ++++++++++++++++++++++++++++++++++++++ test_logging_fix.py | 39 +++++++++++++++++++++++++++++++++++ test_simple_logging.py | 42 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 168 insertions(+) create mode 100644 test_enhanced_logger.py create mode 100644 test_logging_fix.py create mode 100644 test_simple_logging.py diff --git a/modify.md b/modify.md index 6e88020..be6d0f2 100644 --- a/modify.md +++ b/modify.md @@ -1,5 +1,50 @@ # 修改记录 +## 2025-08-12 + +### 日志系统简化 - 移除模块专用日志文件 +**问题**:用户反馈"模块专用日志文件处理器 这样太复杂 问题不好跟踪" + +**解决方案**:简化日志系统,移除模块专用日志文件处理器,只保留三个输出: +- 控制台输出 - 实时查看日志 +- `logs/app.log` - 正常日志(DEBUG、INFO、WARNING级别) +- `logs/error.log` - 异常日志(ERROR、CRITICAL级别,包含堆栈跟踪) + +**文件变更**: +- 更新 `app/utils/structured_log.py` - 移除模块专用日志文件处理器 + +**修改内容**: +```python +# 移除的代码: +# 模块专用日志文件处理器 +module_log_file = f"logs/{self.name}.log" +try: + module_handler = logging.FileHandler(module_log_file, encoding='utf-8') + module_handler.setLevel(logging.DEBUG) + module_handler.setFormatter(StructuredFormatter(include_stack_trace=False)) + self.logger.addHandler(module_handler) +except Exception as e: + print(f"警告:无法创建模块日志文件 {module_log_file}: {e}") +``` + +**优化效果**: +- ✅ 简化日志文件管理,只有两个主要日志文件 +- ✅ 便于问题跟踪,所有日志集中在一个文件中 +- ✅ 减少文件系统开销 +- ✅ 保持结构化日志的优势(JSON格式、上下文信息) +- ✅ 异常日志包含完整堆栈跟踪,便于调试 +- ✅ 正常日志不包含堆栈跟踪,减少文件大小 + +**日志文件说明**: +- `app.log` - 包含所有级别的日志,按时间顺序排列,便于查看完整流程 +- `error.log` - 只包含错误和严重错误,包含堆栈跟踪,便于快速定位问题 +- 控制台输出 - 实时显示所有日志,便于开发和调试 + +**使用建议**: +- 开发调试:主要查看控制台输出 +- 问题排查:查看 `error.log` 快速定位错误 +- 流程分析:查看 `app.log` 了解完整执行流程 + ## 2025-08-11 ### WebSocket心跳循环日志增强 diff --git a/test_enhanced_logger.py b/test_enhanced_logger.py new file mode 100644 index 0000000..2ab9235 --- /dev/null +++ b/test_enhanced_logger.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 +""" +测试get_enhanced_logger函数 +""" +import sys +import os + +# 添加项目根目录到Python路径 +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) + +from app.utils.log import get_enhanced_logger, LogLevel + +def test_enhanced_logger(): + """测试get_enhanced_logger函数""" + print("开始测试get_enhanced_logger函数...") + + # 测试get_enhanced_logger + logger = get_enhanced_logger(__name__, LogLevel.DEBUG) + + print(f"Logger类型: {type(logger)}") + print(f"Logger名称: {logger.name}") + + # 测试不同级别的日志 + logger.debug("这是一条DEBUG日志", debug_param="debug_value") + logger.info("这是一条INFO日志", info_param="info_value") + logger.warning("这是一条WARNING日志", warning_param="warning_value") + logger.error("这是一条ERROR日志", error_param="error_value") + + # 测试异常日志 + try: + raise ValueError("这是一个测试异常") + except Exception as e: + logger.exception("捕获到异常", exception_info=str(e)) + + print("get_enhanced_logger测试完成!") + print("请检查以下文件:") + print("- logs/app.log (包含所有日志)") + print("- logs/error.log (只包含错误日志)") + print("- 控制台输出 (实时显示)") + +if __name__ == "__main__": + test_enhanced_logger() \ No newline at end of file diff --git a/test_logging_fix.py b/test_logging_fix.py new file mode 100644 index 0000000..824c7f5 --- /dev/null +++ b/test_logging_fix.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 +""" +测试日志系统修复 +""" +import asyncio +import sys +import os + +# 添加项目根目录到Python路径 +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) + +from app.utils.log import get_enhanced_logger, LogLevel +from app.services.auto_discovery_adb_service import AutoDiscoveryAdbService + +async def test_logging(): + """测试日志系统""" + print("开始测试日志系统...") + + # 测试结构化日志记录器 + logger = get_enhanced_logger("test_module", LogLevel.DEBUG) + + logger.info("这是一条测试信息", test_param="test_value") + logger.debug("这是一条调试信息", debug_param="debug_value") + logger.warning("这是一条警告信息", warning_param="warning_value") + logger.error("这是一条错误信息", error_param="error_value") + + # 测试AutoDiscoveryAdbService的日志 + service = AutoDiscoveryAdbService() + + try: + # 测试获取服务器信息(可能会失败,但会生成日志) + await service.get_server_info() + except Exception as e: + print(f"预期的错误: {e}") + + print("日志测试完成,请检查logs目录中的日志文件") + +if __name__ == "__main__": + asyncio.run(test_logging()) \ No newline at end of file diff --git a/test_simple_logging.py b/test_simple_logging.py new file mode 100644 index 0000000..b3058e7 --- /dev/null +++ b/test_simple_logging.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 +""" +测试简化后的日志系统 +""" +import sys +import os + +# 添加项目根目录到Python路径 +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) + +from app.utils.structured_log import get_structured_logger, LogLevel + +def test_simple_logging(): + """测试简化后的日志系统""" + print("开始测试简化后的日志系统...") + + # 测试不同模块的日志记录器 + logger1 = get_structured_logger("test_module_1", LogLevel.DEBUG) + logger2 = get_structured_logger("test_module_2", LogLevel.INFO) + + # 测试不同级别的日志 + logger1.debug("调试信息 - 模块1", debug_param="value1") + logger1.info("普通信息 - 模块1", info_param="value2") + logger1.warning("警告信息 - 模块1", warning_param="value3") + + logger2.info("普通信息 - 模块2", info_param="value4") + logger2.error("错误信息 - 模块2", error_param="value5") + + # 测试异常日志 + try: + raise ValueError("这是一个测试异常") + except Exception as e: + logger1.exception("捕获到异常", exception_info=str(e)) + + print("日志测试完成!") + print("请检查以下文件:") + print("- logs/app.log (包含所有日志)") + print("- logs/error.log (只包含错误日志)") + print("- 控制台输出 (实时显示)") + +if __name__ == "__main__": + test_simple_logging() \ No newline at end of file