Skip to content

wangliguo123321/log_analyzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛡️ 日志分析与降噪助手 (Log Analysis & Noise Reduction Tool)

本工具专为开发团队设计,旨在通过自动化分析日志文件,识别出高频重复高存储占用的日志模式,从而帮助团队优化系统性能、降低日志存储成本。

🌟 在线体验地址: 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
Loading

🚀 快速开始

1. 启动应用

如果您在本地运行:

pip install -r requirements.txt
streamlit run log_analyzer.py

2. 使用指南 (图文详解)

第 1 步:上传日志文件

在左侧侧边栏中,点击 "Browse files" 按钮,选择您的 .log.txt 文件。支持多选。

graph TD
    A[用户] -->|点击上传| B(侧边栏: 文件上传区)
    B -->|选择文件| C{文件是否有效?}
    C -->|是| D[开始自动分析]
    C -->|否| E[提示错误]
Loading

第 2 步:查看全局概览

上传成功后,主界面顶部会出现 "概览" 区域,展示关键指标:

  • 文件数量: 处理的文件总数。
  • 总行数: 所有日志文件的总行数。
  • 总大小: 消耗的总存储空间。
  • 检测到模式数: 归一化后发现的唯一日志模版数量。

第 3 步:分析存储占用 (降本关键)

"💾 存储占用 Top N" 区域,您可以直观地看到哪些日志最占空间。

  • 柱状图: 也就是"大块头"日志,通常是长文本日志或极高频日志的累积。
  • 优化建议: 优先针对排名靠前的日志进行缩减或移除,可获得最大的存储优化收益。

第 4 步:分析打印频次 (性能关键)

"📢 频次 Top N" 区域,展示打印次数最多的日志。

  • 柱状图: 显示"话痨"日志。
  • 优化建议:
    • 如果是 ERROR 级别且高频:可能存在未处理的异常循环。
    • 如果是 INFO / DEBUG 级别:可能是无意义的循环打印,建议调整日志级别或增加频率限制。

第 5 步:详细搜索

在页面底部的 "🔍 详细数据浏览" 区域,输入关键词(如 NullPointerExceptionUserLogin),可以快速筛选出相关的日志模式及其统计数据。

🛠️ 项目结构

.
├── log_analyzer.py      # 主应用程序代码 (Streamlit)
├── requirements.txt     # 项目依赖列表
└── README.md            # 项目说明文档

🤝 贡献与支持

欢迎提交 Issue 或 Pull Request 来改进这个项目!

  • 公众号: 薪火传

📄 开源协议

本项目采用 MIT License 开源协议。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages