日志解析的目标是四元组
把 syslog 或应用日志行解析为时间、级别、模块、消息四个字段,之后才能统计与检索。可靠做法是先用 2-3 行真实样例校准字段切分,确认无误再批量执行;解析不出的级别归入 OTHER,不要编造。时间戳原样保留最安全,格式换算交给下游统一处理。
基本信息
| 目标字段 | ts(时间)、level(级别)、module(模块)、msg(正文) |
|---|---|
| 级别取值 | INFO / WARN / ERROR / DEBUG / OTHER |
| 保真 | ts 原样保留,不在抽取阶段换算时区 |
| 批量策略 | 分批送入,解析失败的行单独重试 |
| 框架差异 | FATAL、NOTICE 等需明确归并规则 |
典型使用场景
- 故障排查:把日志行结构化后按模块与级别筛选
- 日志聚合:统一多来源格式后进检索系统
- 告警统计:按级别分布看某次发布后的错误变化
- 审计留痕:把关键操作日志结构化后按时间归档
- 巡检报告:统计各模块错误数量与首次出现时间
日志解析模板
日志解析模板
把下面的日志行解析为 JSON,一行输出一个对象:
{"ts": "原样时间串", "level": "INFO|WARN|ERROR|DEBUG|OTHER", "module": "[]内模块名", "msg": "其余正文"}
解析不了的级别归入 OTHER,不要编造。
# 先给 2-3 行样例让模型确认字段切分口径
# 多行堆栈日志先按时间戳行做事件切分,再逐条解析
# 批量时分批送入,失败行单独重试并记录失败率
日志:
<log>
2026-10-11 09:12:33 WARN [order] retry 2/3 timeout=5s
2026-10-11 09:12:34 ERROR [pay] gateway 502
</log>输出逐列读法
| 字段 | 含义 | 异常表现 |
|---|---|---|
| ts | 原始时间串 | 被改写格式或补上时区,与其他系统对不上 |
| level | 日志级别 | 出现枚举外的值或把 NOTICE 强行归成 ERROR |
| module | 方括号中的模块名 | 方括号缺失时字段为空或被并入 msg |
| msg | 剩余正文 | 被截断,关键错误码丢失 |
多行堆栈日志按行解析会支离破碎;先按时间戳行做事件切分,再对每个事件解析,异常堆栈作为附加字段保留。
级别映射到枚举前先确认框架差异(FATAL、NOTICE、CRITICAL 的归并规则),否则统计口径会与其他系统不一致。