Skip to content

hanmo-coder/ai-log-analyzer

Repository files navigation

AI Log Analyzer

AI-powered Android Logcat Analysis Tool — Crash Detection, Root Cause Analysis & Intelligent Reporting.

Python Platform License Status

GUI + Report
Report Dashboard
GUI Analysis


Why This Project?

Android logcat 日志量巨大,传统 grep + 人工逐行排查耗时且容易遗漏关键异常。

AI Log Analyzer 通过以下能力解决这一问题:

  • 30+ 异常模式识别 — 自动扫描崩溃/ANR/OOM/网络超时等场景
  • 堆栈指纹聚类 — 同根因崩溃自动去重,避免重复排查
  • 时间线分析 — 还原异常发生前后的上下文,检测崩溃重启循环
  • AI 根因推理 — 将聚类后的崩溃提交给 DeepSeek/OpenAI 进行诊断,生成修复建议

帮助测试工程师和 Android 开发者从分钟级人工排查缩短到秒级自动定位


Core Features

Intelligent Crash Detection

  • 自动识别 Java Fatal Exception / ANR / Native Tombstone
  • 30+ 正则模式覆盖:内存溢出、数据库错误、网络安全、IPC 超时、UI 卡顿等
  • 按严重程度分类:Fatal / Error / Warning / Info

Stack Trace Fingerprinting

  • 提取调用栈前 N 帧生成归一化指纹(匿名类归一、包名前缀去除)
  • 同指纹 = 同根因,自动合并重复崩溃
  • ANR 按 Reason 分组,12 大类异常归类

AI Root Cause Analysis

  • 支持 DeepSeek / OpenAI 兼容 API
  • 自动将聚类后的 Top 崩溃提交给 AI 进行根因推理
  • 返回:根因分析 + 修复建议 + 代码示例

Timeline Analysis

  • 将所有异常事件按时间线排列
  • 检测崩溃重启循环(识别短时间内反复 crash 的模式)
  • 标记高频异常时段

Desktop GUI

  • 基于 PyWebView 的现代化 Web UI(Windows 使用 Edge WebView2,系统预装)
  • 多选文件、一键分析、实时进度、终端日志流
  • 分析完成一键打开 HTML 报告

Interactive HTML Report

  • ECharts 图表 — 异常类别分布饼图、时间线柱状图、严重程度统计
  • 全文搜索 + 关键词高亮
  • 可展开的堆栈卡片,暗色主题适配

Architecture

ADB Logcat Dump (.log / .txt)
            │
            ▼
    ┌─────────────────┐
    │  Logcat Parser   │  PID/TID/时间戳/TAG/日志级别 结构化提取
    └────────┬────────┘
            │
            ▼
    ┌─────────────────┐
    │ Pattern Detection │  30+ 正则模式 → 异常事件列表
    └────────┬────────┘
            │
      ┌─────┴─────┐
      ▼           ▼
 ┌─────────┐ ┌─────────┐
 │  Java    │ │ Native  │   StackTrace 提取 + Tombstone 解析
 │  Crash   │ │  Crash  │
 └────┬─────┘ └────┬─────┘
      └─────┬──────┘
            ▼
    ┌─────────────────┐
    │  Fingerprinting  │  堆栈指纹生成 + 聚类去重
    └────────┬────────┘
            │
            ▼
    ┌─────────────────┐
    │  AI Root Cause   │  DeepSeek/OpenAI API → 根因 + 修复建议
    │    Analysis      │
    └────────┬────────┘
            │
            ▼
    ┌─────────────────┐
    │   HTML Report    │  ECharts 可视化 + 交互式仪表盘
    │   / Desktop GUI  │
    └─────────────────┘

Project Structure

ai-log-analyzer/
├── analyzer.py              # CLI 入口
├── gui_app.py               # 桌面 GUI
├── config.py                # 配置
├── requirements.txt
│
├── core/                    # 解析引擎
│   ├── logcat_parser.py     #   Logcat 格式解析
│   ├── stacktrace_parser.py #   Java 堆栈提取
│   ├── native_parser.py     #   Native Tombstone
│   └── models.py
│
├── analysis/                # 异常检测
│   ├── keyword_detector.py  #   30+ 正则模式
│   └── crash_analyzer.py    #   统计摘要
│
├── clustering/              # 聚类去重
│   ├── stack_cluster.py     #   堆栈指纹
│   └── category_grouper.py  #   大类分组
│
├── timeline/                # 时间线
│   ├── event_builder.py
│   └── crash_loop.py        #   崩溃循环检测
│
├── ai/                      # AI 分析
│   ├── client.py            #   API 客户端
│   ├── analyzer.py          #   分析编排
│   └── prompts.py           #   Prompt 模板
│
├── report/                  # 报告生成
│   └── html_builder.py      #   ECharts 仪表盘
│
├── storage/                 # 持久化
├── utils/                   # 工具
├── tests/                   # 30 个测试用例
└── logs/                    # 样本日志

Quick Start

Requirements

  • Python 3.11+
  • Windows / macOS / Linux
  • DeepSeek 或 OpenAI API Key(可选,仅 AI 分析需要)

Install

git clone https://github.com/hanmo-coder/ai-log-analyzer.git
cd ai-log-analyzer
pip install -r requirements.txt

Configure AI (Optional)

cp .env.example .env
# 编辑 .env 填入你的 API Key

Run

# CLI — 分析默认测试日志
python analyzer.py

# CLI — 分析指定文件 + AI 深度分析
python analyzer.py logs/simulation.log --ai

# CLI — 批量分析目录
python analyzer.py logs/ --ai

# GUI — 桌面端启动
python gui_app.py

Run Tests

pytest tests/ -v

Example Output

============================================================
  分析: simulation.log
============================================================
  [1/6] 解析 Logcat 格式...
        解析到 1,847 条结构化日志
  [2/6] 场景化异常检测...
        检测到 23 个异常事件
          exception_generic: 8 次
          slow_ui: 3 次
          java_crash: 2 次
  [3/6] 提取 Java 崩溃...
        提取到 2 个 Java 崩溃
  [4/6] 检测 Native Crash...
        未检测到 Native Crash
        提取到 1 个 ANR 事件
  [5/6] 异常聚类...
        聚类: 3 个 (去重率 0.0%)
  [6/6] 构建时间线...
        检测到 1 个崩溃循环!

  摘要: 1,847 行 | 23 异常 (1.24%) | 2 崩溃 | 1 ANR | 3 聚类

  [AI] 启动 AI 深度分析...
        AI 分析完成,3 个聚类已分析
  HTML 报告已保存至: reports/simulation_report.html

AI Analysis Result (Sample)

[High Severity] NullPointerException — 2 occurrences

Root Cause:
  MainActivity.onCreate() 在 findViewById() 返回 null 后未做空检查,
  直接调用其方法导致 NullPointerException。

Suggestion:
  在 onCreate() 中对 findViewById() 返回值添加 null 判断:
  
  View view = findViewById(R.id.target);
  if (view != null) {
      view.setVisibility(View.VISIBLE);
  }

Tech Stack

Layer Technology
Language Python 3.11+
Log Parsing Regex + Structured Logcat Format
Crash Detection 30+ Pattern Rules Engine
Clustering Stack Fingerprint Hashing
AI Analysis DeepSeek / OpenAI Compatible API
GUI PyWebView + Edge WebView2 (Native)
HTML Report ECharts + Vanilla JS
Testing pytest (30 test cases)

Roadmap

  • Logcat Structured Parsing
  • 30+ Anomaly Pattern Detection
  • Java StackTrace + Native Tombstone Extraction
  • Stack Fingerprint Clustering
  • Timeline Crash Loop Detection
  • AI Root Cause Analysis (DeepSeek/OpenAI)
  • Interactive HTML Dashboard
  • Desktop GUI (PyWebView)
  • Real-time ADB Log Streaming
  • Multi-platform Package (pip install)
  • Plugin System for Custom Detectors
  • Web Dashboard (multi-user)

License

MIT — LICENSE

About

Android ADB logcat 崩溃日志智能分析工具

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages