Browse Source

websocket Client

origin/hotfix/hlk-flight
root 4 months ago
parent
commit
1ec2465f32
  1. 28
      app/utils/structured_log.py
  2. 37
      modify.md

28
app/utils/structured_log.py

@ -115,10 +115,30 @@ class StructuredLogger:
if not os.path.exists(logs_dir):
os.makedirs(logs_dir, exist_ok=True)
# 文件处理器
file_handler = logging.FileHandler(f"logs/{self.name}.log", encoding='utf-8')
file_handler.setFormatter(StructuredFormatter(include_stack_trace=True))
self.logger.addHandler(file_handler)
# 创建过滤器来分离日志级别
class ErrorFilter(logging.Filter):
def filter(self, record):
return record.levelno >= logging.ERROR
class NormalFilter(logging.Filter):
def filter(self, record):
return record.levelno < logging.ERROR
# 异常日志处理器(ERROR和CRITICAL级别)
error_handler = logging.FileHandler("logs/error.log", encoding='utf-8')
error_handler.setLevel(logging.ERROR)
error_handler.setFormatter(StructuredFormatter(include_stack_trace=True))
error_handler.addFilter(ErrorFilter())
# 正常日志处理器(DEBUG、INFO、WARNING级别)
normal_handler = logging.FileHandler("logs/app.log", encoding='utf-8')
normal_handler.setLevel(logging.DEBUG)
normal_handler.setFormatter(StructuredFormatter(include_stack_trace=False))
normal_handler.addFilter(NormalFilter())
# 添加处理器
self.logger.addHandler(error_handler)
self.logger.addHandler(normal_handler)
def _log(self, level: LogLevel, message: str, **kwargs):
"""通用日志方法"""

37
modify.md

@ -2,29 +2,36 @@
## 2025-08-07
### 日志目录创建修复
**问题**:应用启动时出现 `FileNotFoundError: [Errno 2] No such file or directory: 'logs/TermControlAgent.log'` 错误
### 日志系统简化优化
**问题**:用户要求简化日志系统,不要创建太多日志文件,只分异常和非异常两种
**原因**:`structured_log.py` 中尝试创建日志文件时,`logs` 目录不存在
**解决方案**:在创建文件处理器之前,先检查并创建logs目录
**解决方案**:重构日志系统,只创建两个日志文件:
- `logs/app.log` - 正常日志(DEBUG、INFO、WARNING级别)
- `logs/error.log` - 异常日志(ERROR、CRITICAL级别)
**文件变更**:
- 更新 `app/utils/structured_log.py` - `_setup_handlers()` 方法中添加目录创建逻辑
- 更新 `app/utils/structured_log.py` - 重构 `_setup_handlers()` 方法
**修复内容**:
**优化内容**:
```python
# 确保logs目录存在
import os
logs_dir = "logs"
if not os.path.exists(logs_dir):
os.makedirs(logs_dir, exist_ok=True)
# 根据日志级别选择文件
# ERROR和CRITICAL级别写入异常日志文件
# 其他级别写入正常日志文件
error_handler = logging.FileHandler("logs/error.log", encoding='utf-8')
error_handler.setLevel(logging.ERROR)
error_handler.setFormatter(StructuredFormatter(include_stack_trace=True))
normal_handler = logging.FileHandler("logs/app.log", encoding='utf-8')
normal_handler.setLevel(logging.DEBUG)
normal_handler.setFormatter(StructuredFormatter(include_stack_trace=False))
```
**优势**:
- ✅ 自动创建日志目录,避免启动失败
- ✅ 使用 `exist_ok=True` 避免并发创建冲突
- ✅ 保持原有日志功能不变
- ✅ 简化日志文件管理,只有两个文件
- ✅ 异常日志包含完整堆栈跟踪
- ✅ 正常日志不包含堆栈跟踪,减少文件大小
- ✅ 按日志级别自动分流
- ✅ 保持控制台输出功能
### WebSocket API优化

Loading…
Cancel
Save