Browse Source

log 记录问题

origin/hotfix/hlk-flight
root 4 months ago
parent
commit
b374d3f2b7
  1. 45
      modify.md
  2. 42
      test_enhanced_logger.py
  3. 39
      test_logging_fix.py
  4. 42
      test_simple_logging.py

45
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 ## 2025-08-11
### WebSocket心跳循环日志增强 ### WebSocket心跳循环日志增强

42
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()

39
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())

42
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()
Loading…
Cancel
Save