我有一个日志,上面有这样的行:
6/10/2022 10:06:16.908 | INFO | CLASS | BlankStart,15,1,2
但有时,log msg是一个跨越多行的长json blob。
袋日志行示例:
6/10/2022 10:06:16.908 | INFO | CLASS | Obj: { "test": false,
"reso": true }
完整示例w/ 3匹配:
6/10/2022 10:06:16.908 | INFO | CLASS | BlankStart,15,1,2
6/10/2022 10:06:16.908 | INFO | CLASS | Obj: { "test": false,
"reso": true }
6/10/2022 10:06:16.908 | INFO | CLASS | BlankStart,15,1,2
这是我的正则表达式,我添加了“严格”的日期检查新行,现在,只是得到了msg的结尾,忽略了多行。
(?<time>^\d{1,2}\/\d{1,2}\/\d{4}\s\d{2}:\d{2}:\d{2}.\d+)...(?<type>.[^| ]*)...(?<class>.[^| ]*)..(?<msg>.*)
在fluent文档中,他们谈到使用\m
,但我不明白如何在Regex中正确使用它。
https://docs.fluentd.org/parser/regexp#multiline
1条答案
按热度按时间6mzjoqzu1#
在
parse
部分中从regex
切换到multiline
使事情变得更好。我能够定义“日志格式的开始”,它理解为继续每一行的最后一个日志,直到收到一个新的“日志开始”的匹配。