首页/AI/提示词工程速查/日志解析为结构化字段
任务型写法50 条

日志解析为结构化字段

把 syslog 或应用日志行解析为时间、级别、模块、消息四元组:先用少量真实样例校准格式,再批量执行。

提示词工程速查AI更新于 2026-10-13

日志解析的目标是四元组

把 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 的归并规则),否则统计口径会与其他系统不一致。

易错点

  • 多行堆栈日志按行解析,堆栈内容被拆散并入 msg,异常信息无法还原
  • 时间戳被模型顺手格式化或换算时区,跨系统比对时出现整段时间偏移
  • 级别枚举外的值(NOTICE、FATAL)被强行归类,统计出的 ERROR 数量虚高
  • 批量解析不做失败重试与失败率统计,个别行静默丢失,日志完整性受损

数据来源与参考

  • RFC 5424(syslog 协议:时间戳与严重级别字段定义)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌