| name | log-quality-scan |
| description | 扫描日志文件或代码,逐一检查每条日志是否符合日志标准(分级/描述/组件/防刷屏/链路追踪/隐私),输出通过/不通过清单和改进建议。触发词:扫描日志、判断日志好坏、日志质量检查、日志扫描。 |
日志质量扫描器
对日志文件或代码中的日志语句进行质量检查,逐条判断是否符合 log-quality-standard 中定义的所有标准。触发词:扫描日志、判断日志好坏、日志质量检查、日志扫描。
触发词
扫描日志、判断日志好坏、日志质量检查、日志扫描
输入
| 输入 | 必需 | 说明 |
|---|
| 日志内容 | 必需 | 日志文件路径(.log/.txt)或直接粘贴的日志内容 |
| 代码路径 | 可选 | 如果是检查代码中的日志语句,提供代码根目录 |
输出
| 输出 | 格式 | 说明 |
|---|
| 扫描报告 | Markdown | 每条日志的检查结果 + 不合规原因 + 修改建议 |
| 汇总统计 | 数字 | 总数、通过数、不通过数、各标准覆盖率 |
检查标准(对应 log-quality-standard)
| 标准 | 检查项 |
|---|
| (按 standard 原文) | 读取 log-quality-standard 中的所有标准,逐条对应检查 |
工作流程
第一步:解析日志
如果输入是文件路径,读取文件内容。
如果输入是纯文本,按行分割,每行当作一条日志。
第二步:逐条检查
对每条日志,检查是否符合 log-quality-standard 中定义的所有标准。
日志内容:「[ERROR] link failed」
↓
按 `log-quality-standard` 中该标准的定义判断。
**示例**:
日志内容:「[ERROR] link failed」
↓
(按 standard 中各标准的定义逐项检查)
第三步:汇总评级
| 评级 | 条件 |
|---|
| ✅ 合格 | 通过 standard 中所有标准 |
| ⚠️ 警告 | 通过 ≥ N-1 条标准 |
| ❌ 不合格 | 不足 N-1 条标准通过,或任何一条关键标准不通过 |
N = log-quality-standard 中定义的标准总数
第四步:输出报告
# 日志质量扫描报告
## 汇总统计
- **总日志数**:X 条
- **通过**:X 条(Y%)
- **警告**:X 条
- **不合格**:X 条
## 各标准覆盖率
> 读取 `log-quality-standard`,按其中实际定义的标准数量和名称动态生成。
| 标准 | 通过率 |
|------|--------|
| (按 standard 原文) | XX% |
---
## 逐条检查结果
| # | 日志内容(截断) | 各标准检查结果 | 评级 | 不合规原因 | 改进建议 |
|---|-----------------|---------------|------|-----------|----------|
| 1 | [ERROR] link failed | (按 standard 动态填入) | ❌ | 缺少组件、根因、trace_id | 改为 `[ERROR] [cmotor/router] trace_id=xxx, Link failed, error=..., 可检查...` |
不合规判定规则
以下规则按 log-quality-standard 中对应标准的定义判断,不写死具体标准名称。
| 场景 | 判定 | 说明 |
|---|
| 异常日志打 INFO | ❌ 不合格 | 严重违规,分级不清(违反 standard 中分级相关规则) |
| ERROR 无组件标识 | ❌ 不合格 | 无法定位(违反 standard 中组件归属相关规则) |
| ERROR 无 trace_id | ⚠️ 警告 | 无链路追踪能力(违反 standard 中链路追踪相关规则) |
| 含用户 prompt | ❌ 不合格 | 隐私泄露(违反 standard 中隐私保护相关规则) |
| 含完整 api_key | ❌ 不合格 | 隐私泄露(违反 standard 中隐私保护相关规则) |
| 参数错误无对比值 | ⚠️ 警告 | 描述不充分(违反 standard 中描述充分相关规则) |
| 循环内逐条打 ERROR | ⚠️ 警告 | 需合并计数(违反 standard 中防刷屏相关规则) |
注意事项
- 如果输入是代码文件,先用 grep 提取所有日志语句,再逐条检查
- 日志内容中的占位符(
{id}、%s)不纳入隐私检查
- 单条日志无法判断防刷屏时,标注"N/A",以汇总统计中的重复模式分析为准
- 建议配合 log-quality-rewrite 使用,scan 完成后无缝进入 rewrite