本工具专为开发团队设计,旨在通过自动化分析日志文件,识别出高频重复和高存储占用的日志模式,从而帮助团队优化系统性能、降低日志存储成本。
🌟 在线体验地址: https://toploganalyzer.streamlit.app/
- 自动模式提取: 自动忽略日志中的动态参数(如时间戳、PID、内存地址等),将相似日志归类。
- 存储分析: 识别占用磁盘空间最多的日志模式(Total Bytes)。
- 频次分析: 识别打印次数最多的日志模式(Count),帮助发现死循环或冗余Info日志。
- 搜索与过滤: 支持对日志内容和模式进行全文搜索。
- 多文件处理: 支持批量上传多个
.log或.txt文件进行合并分析。
graph TD
User[用户] -->|上传日志文件| WebUI["Streamlit Web 界面"]
WebUI -->|调用| Processor["process_logs 函数"]
subgraph DataProcessing [数据处理核心]
Processor -->|读取文件| Readers["解码 (UTF-8/Latin-1)"]
Readers -->|按行分割| Lines[日志行列表]
Lines -->|遍历每一行| Cleaner["clean_log_line 函数"]
Cleaner -->|"1. 正则归一化"| Regex["移除动态参数\n(时间戳, PID, 指针, 数字等)"]
Regex -->|"2. 生成"| Pattern["日志模式 Template"]
Pattern -->|"3. 聚合统计"| Stats["PatternStats 字典"]
Stats -->|记录| Metrics["计数 + 总字节数 + 示例"]
end
Stats -->|转换| DataFrame["Pandas DataFrame"]
subgraph Visualization [可视化展示]
DataFrame -->|分析| Analysis["计算存储占用 & 出现频次"]
Analysis -->|渲染| Charts["交互式柱状图 & 数据表"]
Charts -->|反馈| User
end
如果您在本地运行:
pip install -r requirements.txt
streamlit run log_analyzer.py在左侧侧边栏中,点击 "Browse files" 按钮,选择您的 .log 或 .txt 文件。支持多选。
graph TD
A[用户] -->|点击上传| B(侧边栏: 文件上传区)
B -->|选择文件| C{文件是否有效?}
C -->|是| D[开始自动分析]
C -->|否| E[提示错误]
上传成功后,主界面顶部会出现 "概览" 区域,展示关键指标:
- 文件数量: 处理的文件总数。
- 总行数: 所有日志文件的总行数。
- 总大小: 消耗的总存储空间。
- 检测到模式数: 归一化后发现的唯一日志模版数量。
在 "💾 存储占用 Top N" 区域,您可以直观地看到哪些日志最占空间。
- 柱状图: 也就是"大块头"日志,通常是长文本日志或极高频日志的累积。
- 优化建议: 优先针对排名靠前的日志进行缩减或移除,可获得最大的存储优化收益。
在 "📢 频次 Top N" 区域,展示打印次数最多的日志。
- 柱状图: 显示"话痨"日志。
- 优化建议:
- 如果是
ERROR级别且高频:可能存在未处理的异常循环。 - 如果是
INFO/DEBUG级别:可能是无意义的循环打印,建议调整日志级别或增加频率限制。
- 如果是
在页面底部的 "🔍 详细数据浏览" 区域,输入关键词(如 NullPointerException 或 UserLogin),可以快速筛选出相关的日志模式及其统计数据。
.
├── log_analyzer.py # 主应用程序代码 (Streamlit)
├── requirements.txt # 项目依赖列表
└── README.md # 项目说明文档
欢迎提交 Issue 或 Pull Request 来改进这个项目!
本项目采用 MIT License 开源协议。

