mirror of
https://github.com/zhinianboke/xianyu-auto-reply.git
synced 2025-08-02 20:47:35 +08:00
297 lines
11 KiB
Markdown
297 lines
11 KiB
Markdown
# 📋 实时日志管理功能说明
|
||
|
||
## 📋 功能概述
|
||
|
||
新增了**实时日志管理功能**,可以实时收集和显示系统的控制台日志输出,支持滚动查看、过滤搜索、自动刷新和统计分析。
|
||
|
||
## 🔥 实时日志特色
|
||
|
||
### 📡 真正的实时日志
|
||
- **实时收集**:直接从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. **定期清空**:避免内存占用过多
|
||
|
||
---
|
||
|
||
🎉 **实时日志管理功能已完成,提供了真正的实时日志查看、过滤和分析能力!**
|