xianyu-auto-reply/日志管理功能说明.md
2025-07-24 12:05:21 +08:00

297 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 📋 实时日志管理功能说明
## 📋 功能概述
新增了**实时日志管理功能**,可以实时收集和显示系统的控制台日志输出,支持滚动查看、过滤搜索、自动刷新和统计分析。
## 🔥 实时日志特色
### 📡 真正的实时日志
- **实时收集**直接从Python logging系统收集日志
- **内存缓存**在内存中保存最新的2000条日志
- **零延迟**:无需读取文件,直接从内存获取
- **控制台同步**:与控制台输出完全同步
## ✨ 主要功能
### 1. 实时日志显示
- 📊 **实时收集**直接从Python logging系统收集日志
- 🔄 **自动刷新**支持每5秒自动刷新日志
- 📜 **滚动查看**:支持滚动查看所有历史日志
- 🎨 **语法高亮**:不同日志级别使用不同颜色显示
- 💾 **内存缓存**最多保存2000条最新日志
### 2. 强大的过滤功能
- 🏷️ **日志级别过滤**DEBUG、INFO、WARNING、ERROR、CRITICAL
- 📦 **来源模块过滤**自动化模块、Web服务器、数据库管理、Cookie管理
- 🔍 **关键词搜索**:支持实时搜索日志内容
- 📏 **行数控制**可选择显示100/200/500/1000行日志
- 🎯 **服务器端过滤**支持在API层面进行过滤提高性能
### 3. 便捷的操作功能
- 🔄 **手动刷新**:点击刷新按钮立即获取最新日志
- 🗑️ **清空显示**:清空当前显示的日志内容
- 💥 **清空服务器日志**:清空服务器内存中的所有日志
- ⏯️ **自动刷新开关**:一键开启/关闭自动刷新
- 📊 **统计信息**:显示详细的日志统计和分析
### 4. 统计分析功能
- 📈 **总体统计**:总日志数、内存使用率
- 📊 **级别分布**:各日志级别的数量和百分比
- 🏷️ **来源分布**:各模块的日志数量和百分比
- 📋 **实时更新**:统计信息实时更新
## 🎯 界面设计
### 菜单位置
在左侧导航栏中,位于"商品管理"和"系统设置"之间:
```
📦 商品管理
📋 日志管理 ← 新增
⚙️ 系统设置
```
### 页面布局
```
┌─────────────────────────────────────────────────────────────────────┐
│ 📋 日志管理 [刷新] [清空显示] [清空服务器] [统计] [自动刷新] │
├─────────────────────────────────────────────────────────────────────┤
│ [日志级别▼] [来源模块▼] [搜索框] [显示行数▼] │
├─────────────────────────────────────────────────────────────────────┤
│ 系统日志 [1250条日志] [刚刚更新] │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ 2025-01-23 12:30:45.123 [INFO] reply_server: 服务启动 │ │
│ │ 2025-01-23 12:30:46.456 [ERROR] db_manager: 连接失败 │ │
│ │ 2025-01-23 12:30:47.789 [WARNING] cookie_manager: 令牌过期 │ │
│ │ 2025-01-23 12:30:48.012 [DEBUG] XianyuAutoAsync: 处理消息 │ │
│ │ ... │ │
│ └─────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
```
## 🔧 技术实现
### 核心架构:实时日志收集器
1. **LogCollector类**
```python
class LogCollector:
def __init__(self, max_logs: int = 2000):
self.logs = deque(maxlen=max_logs) # 循环缓冲区
self.handler = LogHandler(self) # 自定义日志处理器
```
2. **LogHandler处理器**
```python
class LogHandler(logging.Handler):
def emit(self, record: logging.LogRecord):
self.collector.add_log(record) # 实时收集日志
```
3. **全局集成**
- 在Start.py中初始化日志收集器
- 自动注册到Python logging系统
- 所有模块的日志都会被自动收集
### 前端实现
1. **HTML结构**
- 添加日志管理菜单项
- 创建日志显示页面
- 设计过滤器和控制按钮
- 新增统计信息模态框
2. **CSS样式**
- 深色主题的日志容器
- 不同级别的颜色区分
- 滚动条美化
- 响应式布局
3. **JavaScript功能**
- 实时日志获取和显示
- 客户端和服务器端过滤
- 自动刷新机制
- 统计信息展示
- 页面切换处理
### 后端API接口
1. **获取日志**
```python
@app.get("/logs")
async def get_logs(lines: int = 200, level: str = None, source: str = None):
```
2. **日志统计**
```python
@app.get("/logs/stats")
async def get_log_stats():
```
3. **清空日志**
```python
@app.post("/logs/clear")
async def clear_logs():
```
## 📊 实时日志格式
### 收集的日志信息
```json
{
"timestamp": "2025-01-23T12:30:45.123000",
"level": "INFO",
"source": "XianyuAutoAsync",
"function": "process_message",
"line": 1234,
"message": "处理消息成功"
}
```
### 日志来源
- **XianyuAutoAsync**: 自动化核心模块
- **reply_server**: Web服务器
- **db_manager**: 数据库管理
- **cookie_manager**: Cookie管理
- **log_collector**: 日志收集器
- **Start**: 启动模块
- **test_***: 测试模块
### 支持的日志级别
- 🔵 **DEBUG**:调试信息(蓝色)
- 🟢 **INFO**:一般信息(绿色)
- 🟡 **WARNING**:警告信息(黄色)
- 🔴 **ERROR**:错误信息(红色)
- 🟣 **CRITICAL**:严重错误(紫色,加粗)
## 🚀 使用方法
### 1. 访问日志管理
1. 登录系统后,点击左侧菜单的"日志管理"
2. 系统会自动加载最新的200条日志
3. 日志以时间倒序显示,最新的在底部
### 2. 过滤日志
- **按级别过滤**选择特定的日志级别如只看ERROR
- **按来源过滤**:选择特定的模块(如只看数据库相关)
- **关键词搜索**:输入关键词实时搜索日志内容
- **调整行数**:选择显示更多或更少的日志行数
### 3. 自动刷新
1. 点击"开启自动刷新"按钮
2. 系统每5秒自动获取最新日志
3. 再次点击可停止自动刷新
### 4. 手动操作
- **刷新**:立即获取最新日志
- **清空显示**:清空当前显示的日志(不删除服务器数据)
- **清空服务器日志**:清空服务器内存中的所有日志
- **统计信息**:查看详细的日志统计和分析
- **滚动查看**:使用鼠标滚轮或滚动条查看历史日志
### 5. 统计分析
- **总体统计**:查看日志总数和内存使用情况
- **级别分布**:查看各日志级别的数量和百分比
- **来源分布**:查看各模块的日志数量和百分比
- **实时更新**:统计信息随日志实时更新
## 💾 内存日志管理
### 内存缓存机制
- **循环缓冲区**使用deque实现最多保存2000条日志
- **自动清理**:超出容量时自动删除最旧的日志
- **线程安全**:使用锁机制确保多线程安全
- **零文件依赖**:完全基于内存,无需读取日志文件
### 性能优势
- **零延迟**直接从内存获取无文件I/O
- **实时性**:与控制台输出完全同步
- **高效过滤**:在内存中进行过滤,速度极快
- **低资源消耗**:内存占用可控,不会无限增长
## ⚠️ 注意事项
### 1. 性能考虑
- 大日志文件可能影响加载速度
- 建议设置合理的显示行数
- 自动刷新会增加服务器负载
### 2. 权限要求
- 需要管理员权限才能访问
- 确保日志文件有读取权限
- 网络连接稳定性影响实时性
### 3. 浏览器兼容性
- 建议使用现代浏览器
- 支持WebSocket的浏览器效果更佳
- 移动端可能显示效果有限
## 🔮 未来扩展
### 1. 高级功能
- 📊 **日志统计**:错误率、调用频率统计
- 📈 **图表展示**:日志趋势图表
- 🔔 **实时告警**:错误日志实时通知
- 💾 **日志下载**:支持导出日志文件
### 2. 性能优化
- 🚀 **WebSocket**:实时推送新日志
- 💾 **缓存机制**:减少文件读取次数
- 🔄 **增量更新**:只获取新增日志
- 📦 **压缩传输**:减少网络传输量
### 3. 用户体验
- 🎨 **主题切换**:支持亮色/暗色主题
- 🔍 **高级搜索**:正则表达式搜索
- 📌 **书签功能**:标记重要日志
- 📱 **移动适配**:优化移动端显示
## 🎉 功能特色
### 1. 实时性
- 自动刷新机制确保日志实时性
- 页面切换时智能停止刷新
- 手动刷新立即获取最新内容
### 2. 易用性
- 直观的界面设计
- 丰富的过滤选项
- 便捷的操作按钮
### 3. 专业性
- 类似IDE的日志显示效果
- 语法高亮和颜色区分
- 专业的等宽字体
### 4. 可扩展性
- 模块化的代码结构
- 易于添加新功能
- 支持多种日志格式
## 🆚 对比:文件日志 vs 实时日志
| 特性 | 文件日志 | 实时日志 |
|------|---------|---------|
| **实时性** | 需要刷新文件 | 完全实时 |
| **性能** | 文件I/O开销 | 内存访问,极快 |
| **同步性** | 可能有延迟 | 与控制台同步 |
| **资源消耗** | 磁盘I/O | 内存占用 |
| **历史记录** | 永久保存 | 最新2000条 |
| **过滤效率** | 需要解析 | 内存中过滤 |
| **部署复杂度** | 需要日志文件 | 无额外依赖 |
## 🎯 使用建议
### 适用场景
-**开发调试**:实时查看程序运行状态
-**问题排查**:快速定位错误和异常
-**性能监控**:监控系统运行情况
-**用户支持**:协助用户解决问题
### 最佳实践
1. **开启自动刷新**:实时监控系统状态
2. **使用过滤器**:快速找到关注的日志
3. **查看统计信息**:了解系统整体状况
4. **定期清空**:避免内存占用过多
---
🎉 **实时日志管理功能已完成,提供了真正的实时日志查看、过滤和分析能力!**