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

FileBeat多行正则表达式配置求助:匹配含空行的异常日志

FileBeat多行日志匹配配置问题解决

问题场景

日志包含空行分隔的异常栈信息,需要配置FileBeat的多行规则将完整的异常日志合并为单条,但现有配置无法生效。

日志示例

02/21/2022 08:48:41 AM com.myClass ERROR:  com.MyException: The id '-1' is not valid for an object of type 'Result Type' (50) 
com.MyException: The id '-1' is not valid for an object of type 'Result Type' (50)

    at com.myClass.createResultType(Native Method)

    at com.myClass.getResultTableForResult(MyClass.java:1172)

    at com.myClass.getResultFromUDSRPnlWrapper(MyClass.java:508)

    at com.myClass.loadDataSet(MyClass.java:143)

    at com.myClass.calculate(MyClass.java:166)

当前无效配置

multiline.type: pattern
multiline.pattern: '^\n[[:space:]]'
multiline.negate: false
multiline.match: after

问题分析

原配置失效原因:

  1. FileBeat逐行处理日志,每一行不会包含开头的换行符,^\n永远无法匹配到目标行。
  2. 规则未覆盖第二行重复的异常信息行,仅考虑了空行后的缩进栈帧。

解决方案

提供两种可行配置,按需选择:

方案1:匹配异常栈相关行(精准匹配)

针对日志中com.MyException开头的重复行和缩进的at开头栈帧行,将这些行合并到前一条日志:

multiline.type: pattern
multiline.pattern: '^(\s+at|com\.MyException:)'
multiline.negate: false
multiline.match: after

方案2:匹配日志起始行(通用匹配)

以日期格式开头的行作为日志起始标记,所有非起始行都合并到前一条日志,适配更多日志场景:

multiline.type: pattern
multiline.pattern: '^\d{2}/\d{2}/\d{4}'
multiline.negate: true
multiline.match: after

配置说明

  • multiline.negate: true(方案2):表示匹配结果取反,即不满足pattern的行会被合并到前一行。
  • multiline.match: after:表示将匹配到的行(或取反后的行)追加到前一条日志的末尾。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:35:15