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

IntelliJ使用Grep Console筛选完整多行JSON日志的方法

Grep Console 匹配完整多行JSON日志配置方法

问题原因

Grep Console 默认采用单行匹配逻辑,之前使用的.*info.*规则只会命中包含"level" : "INFO"的单一行内容,不会自动关联同一JSON结构下的其他行,因此无法拿到完整日志条目。

配置步骤

方案1:块边界配置(无需复杂正则,推荐)

  • 打开IntelliJ中Grep Console的配置面板,找到「Block detection(块检测)」配置项
  • 配置块起始匹配规则:^\{(匹配行首的左大括号,即单条JSON日志的开始位置)
  • 配置块结束匹配规则:^\}(匹配行首的右大括号,即单条JSON日志的结束位置)
  • 保存配置后,原本使用的.*"level"\s*:\s*"INFO".*匹配规则就会在整个JSON块范围内检索,命中后会直接返回完整的JSON日志条目,不会只返回单行。

方案2:多行正则匹配

如果不想改全局块检测规则,可以直接给对应过滤规则开启多行模式,写匹配完整块的正则:

  • 找到正在使用的INFO级过滤规则,勾选规则配置里的*Multiline(多行匹配)*选项
  • 将匹配正则替换为以下内容:
^\{[^{}]*"level"\s*:\s*"INFO"[\s\S]*?^\}

正则逻辑说明:

  • 从行首的左大括号(JSON起始位)开始匹配
  • 校验块内包含level字段值为INFO的内容,兼容键值对前后的任意空格
  • 非贪婪匹配块内所有内容(包含换行),直到命中行首的右大括号(JSON结束位)即停止,避免跨日志块匹配

注意事项

  • 如果需要筛选ERROR、WARN等其他级别日志,只需把上述规则里的INFO替换为对应级别值即可
  • 如果JSON日志存在嵌套大括号结构(如message字段内包含JSON片段),可以根据实际日志格式调整块结束标记的匹配规则,避免匹配截断
  • 配置完成后确认规则输出选项为输出完整匹配内容,不要勾选「仅输出命中行」选项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:48:46