xianyu-auto-reply/日志管理功能说明.md
2025-07-24 14:16:18 +08:00

13 KiB
Raw Blame History

📋 实时日志管理功能说明

📋 功能概述

新增了实时日志管理功能,可以实时收集和显示系统的控制台日志输出,支持滚动查看、过滤搜索、自动刷新和统计分析。

🔥 实时日志特色

📡 真正的实时日志

  • 实时收集直接从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类

    class LogCollector:
        def __init__(self, max_logs: int = 2000):
            self.logs = deque(maxlen=max_logs)  # 循环缓冲区
            self.handler = LogHandler(self)     # 自定义日志处理器
    
  2. LogHandler处理器

    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. 获取日志

    @app.get("/logs")
    async def get_logs(lines: int = 200, level: str = None, source: str = None):
    
  2. 日志统计

    @app.get("/logs/stats")
    async def get_log_stats():
    
  3. 清空日志

    @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. 访问日志管理

  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. 适时清空内存日志:避免内存占用过多,保持系统性能
  5. 结合文件日志:重要日志同时查看文件日志进行备份
  6. 设置告警规则对ERROR级别日志设置告警通知

日志级别使用指南

  • DEBUG:详细的调试信息,开发阶段使用
  • INFO:一般信息,记录程序正常运行状态
  • WARNING:警告信息,需要注意但不影响运行
  • ERROR:错误信息,需要立即处理的问题
  • CRITICAL:严重错误,可能导致程序崩溃

🔧 高级功能

日志导出

  1. 实时导出:将当前显示的日志导出为文件
  2. 批量导出:导出指定时间范围的日志
  3. 格式选择支持TXT、JSON、CSV等格式
  4. 自动压缩:大文件自动压缩处理

日志分析

  1. 趋势分析:分析日志数量和级别的时间趋势
  2. 异常检测:自动检测异常日志模式
  3. 性能分析:分析系统性能相关日志
  4. 报表生成:生成日志分析报表

告警配置

  1. 级别告警ERROR级别日志自动告警
  2. 频率告警:异常日志频率过高时告警
  3. 关键词告警:包含特定关键词的日志告警
  4. 通知方式支持邮件、短信、webhook等通知

🚨 故障排除

常见问题

Q: 日志不更新? A: 检查以下项目:

  • 自动刷新是否开启
  • 网络连接是否正常
  • 服务器是否正常运行
  • 浏览器是否支持WebSocket

Q: 日志显示不完整? A: 可能原因:

  • 内存缓冲区已满,旧日志被清理
  • 过滤器设置过于严格
  • 日志级别设置不当

Q: 性能影响? A: 优化建议:

  • 适当调整刷新频率
  • 使用过滤器减少显示数量
  • 定期清空内存日志
  • 关闭不必要的DEBUG日志

性能优化

  1. 合理设置缓冲区大小:根据系统内存调整
  2. 优化刷新频率:平衡实时性和性能
  3. 使用过滤器:减少不必要的日志传输
  4. 定期清理:避免内存泄漏

📊 监控指标

系统指标

  • 日志生成速率:每秒生成的日志数量
  • 内存使用量:日志缓冲区内存占用
  • 处理延迟:日志从生成到显示的延迟
  • 错误率ERROR级别日志的比例

业务指标

  • 消息处理量:处理的消息数量统计
  • API调用次数各API接口的调用统计
  • 用户活动:用户操作和访问统计
  • 系统健康度:基于日志的系统健康评分

🎉 实时日志管理功能提供了完整的日志查看、分析和监控能力,是系统运维和问题排查的重要工具!