mirror of
https://github.com/zhinianboke/xianyu-auto-reply.git
synced 2025-08-02 04:27:36 +08:00
11 KiB
11 KiB
📋 实时日志管理功能说明
📋 功能概述
新增了实时日志管理功能,可以实时收集和显示系统的控制台日志输出,支持滚动查看、过滤搜索、自动刷新和统计分析。
🔥 实时日志特色
📡 真正的实时日志
- 实时收集:直接从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: 处理消息 │ │
│ │ ... │ │
│ └─────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
🔧 技术实现
核心架构:实时日志收集器
-
LogCollector类
class LogCollector: def __init__(self, max_logs: int = 2000): self.logs = deque(maxlen=max_logs) # 循环缓冲区 self.handler = LogHandler(self) # 自定义日志处理器
-
LogHandler处理器
class LogHandler(logging.Handler): def emit(self, record: logging.LogRecord): self.collector.add_log(record) # 实时收集日志
-
全局集成
- 在Start.py中初始化日志收集器
- 自动注册到Python logging系统
- 所有模块的日志都会被自动收集
前端实现
-
HTML结构
- 添加日志管理菜单项
- 创建日志显示页面
- 设计过滤器和控制按钮
- 新增统计信息模态框
-
CSS样式
- 深色主题的日志容器
- 不同级别的颜色区分
- 滚动条美化
- 响应式布局
-
JavaScript功能
- 实时日志获取和显示
- 客户端和服务器端过滤
- 自动刷新机制
- 统计信息展示
- 页面切换处理
后端API接口
-
获取日志
@app.get("/logs") async def get_logs(lines: int = 200, level: str = None, source: str = None):
-
日志统计
@app.get("/logs/stats") async def get_log_stats():
-
清空日志
@app.post("/logs/clear") async def clear_logs():
📊 实时日志格式
收集的日志信息
{
"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. 访问日志管理
- 登录系统后,点击左侧菜单的"日志管理"
- 系统会自动加载最新的200条日志
- 日志以时间倒序显示,最新的在底部
2. 过滤日志
- 按级别过滤:选择特定的日志级别(如只看ERROR)
- 按来源过滤:选择特定的模块(如只看数据库相关)
- 关键词搜索:输入关键词实时搜索日志内容
- 调整行数:选择显示更多或更少的日志行数
3. 自动刷新
- 点击"开启自动刷新"按钮
- 系统每5秒自动获取最新日志
- 再次点击可停止自动刷新
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条 |
过滤效率 | 需要解析 | 内存中过滤 |
部署复杂度 | 需要日志文件 | 无额外依赖 |
🎯 使用建议
适用场景
- ✅ 开发调试:实时查看程序运行状态
- ✅ 问题排查:快速定位错误和异常
- ✅ 性能监控:监控系统运行情况
- ✅ 用户支持:协助用户解决问题
最佳实践
- 开启自动刷新:实时监控系统状态
- 使用过滤器:快速找到关注的日志
- 查看统计信息:了解系统整体状况
- 定期清空:避免内存占用过多
🎉 实时日志管理功能已完成,提供了真正的实时日志查看、过滤和分析能力!