# Log_analysis **Repository Path**: jasonlzx/log_analysis ## Basic Information - **Project Name**: Log_analysis - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-15 - **Last Updated**: 2026-04-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 日志自动分析工具文档 ## 📋 目标 快速识别项目开发中各模块的日志信息含义,帮助大家快速调试,诊断异常信息,提前暴露风险。 ### 核心特性 - ✅ **多模块支持**:支持 11 个预设模块(TP、Key、System、Screen、Sport、OTA、BLE/BT、Storage、Health_alg、Power、Error) - ✅ **灵活配置**:基于 JSON 配置文件,支持模块化和组合使用 - ✅ **正则表达式匹配**:支持复杂的关键字匹配规则和值提取 - ✅ **彩色高亮显示**:为不同类型的日志事件指定颜色 - ✅ **日志行定位**:双击结果行可使用 Notepad++ 定位到原始日志行 --- ## 📁 项目结构 ``` Log_analysis/ ├── main.py # GUI 主程序 ├── log_parser.py # 日志解析引擎 ├── read_log.py # 日志读取示例 ├── config/ # 配置文件目录 │ ├── log_tp_config.json # 触摸屏配置 │ ├── log_key_config.json # 按键配置 │ ├── log_system_config.json # 系统配置 │ ├── log_screen_config.json # 屏幕配置 │ ├── log_sport_config.json # 运动配置 │ ├── log_ota_config.json # OTA升级配置 │ ├── log_ble_bt_config.json # 蓝牙配置 │ ├── log_storage_config.json # 存储配置 │ ├── log_health_alg_config.json # 健康算法配置 │ ├── log_power_config.json # 电源配置 │ └── log_error_config.json # 错误配置 └── README.md # 项目文档 ``` ### 核心文件说明 | 文件 | 用途 | 说明 | |------|------|------| | **main.py** | GUI 主程序 | 基于 Tkinter 的用户界面,负责文件选择、配置管理和结果展示 | | **log_parser.py** | 日志解析引擎 | 处理编码检测、配置加载、正则匹配、结果生成 | | **read_log.py** | 示例文件 | 简单的日志读取演示(可选) | | **config/*.json** | 配置文件 | 模块化的关键字规则配置文件 | --- ## 🚀 快速开始 ### 获取代码 ```bash git clone https://gitee.com/jasonlzx/log_analysis.git cd log_analysis ``` ### 系统要求 - **Python 版本**:Python 3.6+ - **操作系统**:Windows、Linux - **外部工具**:Notepad++ (可选,用于日志行定位功能) ### 安装依赖 ```bash pip install chardet ``` ### 运行应用 ```bash cd Log_analysis python main.py ``` --- ## 📖 使用指南 ### 基本工作流 #### 1. 启动应用 运行 `python main.py` 后,会打开日志自动分析工具窗口。 #### 2. 选择日志文件 点击 **"选择日志文件"** 按钮,选择要分析的日志文件(.log 或其他格式)。 #### 3. 选择分析模块 有两种方式配置分析模块: **方式一:使用复选框(推荐)** - 界面上有 11 个预设模块的复选框 - 勾选需要的模块即可自动加载对应配置文件 - 支持多选,系统会自动合并所有选中模块的关键字规则 **方式二:手动选择配置文件** - 点击 **"选择配置"** 按钮 - 选择一个或多个 JSON 配置文件 - 系统会合并所有选中配置文件的关键字规则 #### 4. 执行分析 点击 **"开始分析"** 按钮,系统开始扫描日志文件并查找匹配的关键字。 #### 5. 查看结果 分析结果以表格形式显示: | 列 | 说明 | |---|---| | **行号** | 日志中关键字出现的行号 | | **模块** | 关键字所属模块(如 TP、KEY、SYSTEM) | | **事件** | 关键字的描述信息 | | **日志** | 该行日志的完整内容 | #### 6. 定位原始日志 双击任意结果行,系统会使用 Notepad++ 自动打开日志文件,并定位到对应的行号(需提前安装 Notepad++,并且加入环境变量)。 ![alt text](image-2.png) 运行效果图 ![alt text](image-3.png) --- ## ⚙️ 配置文件格式 ### JSON 配置文件结构 所有配置文件都遵循统一的 JSON 格式: ```json { "keywords": { "正则表达式1": { "description": "中文描述", "module": "模块名", "color": "#RRGGBB", "enabled": true, "value_pattern": "捕获正则表达式" }, "正则表达式2": { "description": "中文描述", "module": "模块名" } } } ``` ### 字段说明 | 字段 | 必需 | 说明 | |------|------|------| | **keywords** | ✅ | 关键字配置对象 | | **description** | ✅ | 关键字的中文描述,显示在"事件"列 | | **module** | ✅ | 所属模块名称,用大写缩写(如 TP、KEY、SYSTEM) | | **color** | ❌ | 颜色代码(十六进制,如 `#FFA500`);缺省为黑色 `#000000` | | **enabled** | ❌ | 是否启用该关键字,默认为 `true` | | **value_pattern** | ❌ | 正则捕获组,用于从日志行中提取特定值 | ### 实例说明 #### 基础配置示例 ```json { "keywords": { "display on": { "description": "亮屏", "module": "KEY" } } } ``` #### 带颜色的配置 ```json { "keywords": { "tp_upg ": { "description": "TP升级信息", "module": "TP", "color": "#FFA500" } } } ``` #### 带值提取的配置 ```json { "keywords": { "firmware version =": { "description": "获取固件版本号", "module": "SYSTEM", "value_pattern": "(\\d+\\.\\d+\\.\\d+\\.\\d+)", "color": "#FFA500" } } } ``` 在这个例子中,如果日志行是: ``` [INFO] firmware version = 1.2.3.4 loaded ``` 系统会提取出 `1.2.3.4` 作为匹配的值。 --- ## 🚀 扩展和定制 ### 添加新的分析模块 1. **创建配置文件**:在 `config/` 目录创建新的 JSON 文件,如 `log_xx_config.json` 2. **定义关键字规则**: ```json { "keywords": { "your_keyword": { "description": "中文描述", "module": "MODULE_NAME", "color": "#RRGGBB" } } } ``` 3. **在 main.py 中注册模块**(可选,用于快速选择): 在 `LogAnalyzerGUI.__init__()` 中的 `self.config_options` 列表添加: ```python { 'name': '显示名称', 'path': 'config/log_xx_config.json', 'var': tk.BooleanVar(value=False) } ``` 4. **重启应用**:新模块会自动出现在复选框列表中 ## 🐛 故障排除 ### 常见问题 #### 问题 1:无法使用 Notepad++ 跳转功能 **现象**:双击结果行后无反应 **解决方案**: - 检查是否安装了 Notepad++ - 确保 Notepad++ 在系统 PATH 中 - 如果未安装,可以手动打开日志文件并跳转到指定行号 #### 问题 2:配置文件加载失败 **现象**:选择配置文件后无法加载 **解决方案**: - 确保配置文件是有效的 JSON 格式 - 确保配置文件使用 UTF-8 编码 - 检查文件路径是否正确 #### 问题 3:config中颜色无法快速拾取 **解决方案**: - vscode->设置->搜索"颜色"->勾选"启用颜色装饰器功能" ![alt text](image.png)