You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Linux中筛选特定REQ ID的持续ERROR日志记录

筛选持续处于ERROR状态的请求日志行

需求:从日志中筛选出REQ ID反复处于ERROR状态的ERROR日志行——即某个REQ ID的所有日志记录均为ERROR,无后续非ERROR状态(如INFO)的记录,按单日持续报错排查这类请求。

日志示例

yyyy-mm-dd [INFO] REQ1 Context 1
yyyy-mm-dd [ERROR] REQ2 Context 2
yyyy-mm-dd [ERROR] REQ3 Context 3
yyyy-mm-dd [INFO] REQ1 Context 4
yyyy-mm-dd [INFO] REQ2 Context 5
yyyy-mm-dd [ERROR] REQ3 Context 6

预期输出

yyyy-mm-dd [ERROR] REQ3 Context 3
yyyy-mm-dd [ERROR] REQ3 Context 6

原因说明

  • REQ3的所有日志均为ERROR,无INFO状态记录,属于持续报错的请求
  • REQ2虽有ERROR记录,但后续出现INFO状态,说明请求已恢复,因此排除

实现方法(Shell命令)

可以用awk命令一次性完成筛选,无需临时文件:

awk '
    /\[INFO\]/ {info_reqs[$3] = 1}
    /\[ERROR\]/ {error_lines[$0] = $3}
    END {
        for (line in error_lines) {
            req = error_lines[line]
            if (!info_reqs[req]) {
                print line
            }
        }
    }
' 你的日志文件名.log

命令逻辑

  1. 遍历日志时,将出现过INFO状态的REQ ID存入info_reqs数组标记
  2. 同时将所有ERROR日志行及其对应的REQ ID存入error_lines数组
  3. 最后遍历所有ERROR行,仅输出REQ ID未在info_reqs中出现过的记录——也就是从未恢复的持续报错请求的ERROR日志

内容的提问来源于stack exchange,提问作者Vieypul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 05:10:37