小紫 日志分析插件
v1.0.0 · 运维协作 · 官方
简介
小紫 日志分析插件 v1.0,AI 直接分析本地日志文件,运维排错不用开终端:
- tail 读最后 N 行(大文件倒读,不占内存)
- search 关键词或正则搜索,可带上下文行
- stats 统计 ERROR / WARN / INFO / DEBUG 数量
- extract 提取 Exception / Traceback 堆栈块
- 无需 pip,UTF-8 / GBK 自动尝试
适用:Java 应用、Python 服务、Nginx 访问/错误日志、Windows 事件导出文本等。
典型流程:stats 看错误占比 → search 定位关键词 → extract 拉堆栈 → tail 看最新输出
操作说明
| action | 功能 |
|---|---|
tail | 读取日志末尾 N 行,默认 50 |
search | 按关键词或正则搜索,返回匹配行及上下文 |
stats | 按行识别日志级别并计数 |
extract | 提取异常/错误及后续堆栈行 |
search 参数要点:
query关键词或正则表达式regex设为true启用正则context匹配行前后各 N 行(默认 0)case_sensitive设为true区分大小写max_results最多返回条数(默认 50)
extract 参数要点:
max_results最多提取异常块数(默认 30)since/until按日志行内时间字符串过滤区间(子串匹配)
stats 识别规则: 行内包含 ERROR/FATAL/CRITICAL、WARN/WARNING、INFO、DEBUG;含 Exception/Traceback 计为 ERROR。
安装
- 解压到
D:\xiaozi-plugins\运维协作\日志分析插件\ - 复制
python/到本目录 - 测试:
run.bat --action tail --filepath D:\logs\app.log --lines 10
| 文件 | 说明 |
|---|---|
log_analyzer_plugin.py | 主程序 |
run.bat / run.sh | 启动脚本 |
日志分析插件.md | 用户文档 |
上架文案/ | 商店详情(本文件,不打 zip) |
无需 pip,标准库即可。
命令行
REM 看最后 100 行
run.bat --action tail --filepath D:\logs\app.log --lines 100
REM 搜索 ERROR(默认不区分大小写)
run.bat --action search --filepath D:\logs\app.log --query ERROR --context 2
REM 正则搜索 IP 地址
run.bat --action search --filepath D:\logs\nginx.log --query "\d+\.\d+\.\d+\.\d+" --regex true --context 1
REM 区分大小写搜 Exception
run.bat --action search --filepath D:\logs\app.log --query NullPointerException --case_sensitive true
REM 级别统计
run.bat --action stats --filepath D:\logs\app.log
REM 提取最近 20 条异常堆栈
run.bat --action extract --filepath D:\logs\app.log --max_results 20
REM 按时间段提取(日志行须含该时间字符串)
run.bat --action extract --filepath D:\logs\app.log --since "2026-09-17 10:00" --until "2026-09-17 11:00"
REM GBK 编码老日志
run.bat --action tail --filepath D:\logs\legacy.log --encoding gbk
注册技能 log_analyzer
名称: log_analyzer
描述: 日志分析 v1.0:tail/search/stats/extract。读末尾、搜关键词正则、统计 ERROR/WARN/INFO/DEBUG、提取 Exception 堆栈。用户查日志、搜错误、看最后几行、统计级别、分析异常时使用。需提供 filepath 日志文件完整路径。
脚本: D:\xiaozi-plugins\运维协作\日志分析插件\run.bat
参数 JSON:
{
"type": "object",
"properties": {
"action": {"type": "string", "enum": ["search", "tail", "stats", "extract"], "description": "操作类型"},
"filepath": {"type": "string", "description": "日志文件完整路径,必填"},
"query": {"type": "string", "description": "search关键词或正则"},
"regex": {"type": "string", "description": "search是否正则 true/false"},
"lines": {"type": "string", "description": "tail读取行数,默认50"},
"max_results": {"type": "string", "description": "search/extract最多返回条数"},
"context": {"type": "string", "description": "search匹配上下文行数"},
"encoding": {"type": "string", "description": "编码 utf-8/gbk,不填自动检测"},
"case_sensitive": {"type": "string", "description": "search区分大小写 true/false"},
"since": {"type": "string", "description": "extract起始时间字符串过滤"},
"until": {"type": "string", "description": "extract结束时间字符串过滤"}
},
"required": ["action", "filepath"]
}
对话示例
| 场景 | 说法 |
|---|---|
| 看末尾 | 看 D:\logs\app.log 最后 50 行 |
| 搜错误 | 在 app.log 里搜索 NullPointerException,带前后 2 行上下文 |
| 统计 | 统计 nginx.log 里有多少 ERROR 和 WARN |
| 提异常 | 提取 app.log 里最近的异常堆栈,最多 10 条 |
| 查 IP | 在 access.log 里用正则找所有 IP 地址 |
| 老日志 | 用 gbk 编码读 D:\logs\legacy.log 最后 100 行 |
小紫 AI 会根据描述选 action 并传 filepath、query、lines 等参数。
常见错误
| 现象 | 处理 |
|---|---|
| 文件不存在 | 检查 filepath 完整路径,注意盘符与反斜杠 |
| 乱码 | 指定 --encoding gbk 或 --encoding utf-8 |
| search 无结果 | 换关键词、开 --regex true、或关大小写敏感 |
| 正则报错 | 检查 query 转义,JSON 传参时注意反斜杠 |
| extract 为空 | 日志可能无 Exception/Traceback,或 since/until 过滤过窄 |
| python folder missing | 复制 python 到插件目录 |
能力边界
| 支持 | 不支持 |
|---|---|
| 本地单文件日志 | 实时 tail -f 流式监控 |
| 关键词/正则/级别统计 | ELK / Loki 远程查询 |
| Java/Python 堆栈提取 | 所有自定义日志格式 100% 解析 |
| UTF-8 / GBK 自动尝试 | 二进制 / 压缩包内日志 |
| 大文件 tail 倒读 | 多文件合并分析 |
与其他插件配合
- 系统基础插件:exec_cmd 定位日志路径、列出目录
- 服务巡检插件:探活失败后 tail/search 对应服务日志
- 小紫_push:内网协同把分析结果推送给同事
推荐顺序:stats 看概况 → search 定位 → extract 拿堆栈 → tail 看最新
详见包内 日志分析插件.md。