提问人:FreeSoftwareServers 提问时间:6/7/2023 更新时间:6/8/2023 访问量:114
在 FluentD 中使用 Ruby 正则表达式进行多行日志文件解析
Multi-Line Log File Parsing with Ruby Regex in FluentD
问:
我有一个日志,里面有这样的行:
6/10/2022 10:06:16.908 | INFO | CLASS | BlankStart,15,1,2
但有时,日志消息是多行的长 json blob。
行李日志行示例:
6/10/2022 10:06:16.908 | INFO | CLASS | Obj: { "test": false,
"reso": true }
完整示例(含 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
这是我的正则表达式,我添加了“严格”日期检查新行,现在,只需获取消息的末尾并忽略多行。
(?<time>^\d{1,2}\/\d{1,2}\/\d{4}\s\d{2}:\d{2}:\d{2}.\d+)...(?<type>.[^| ]*)...(?<class>.[^| ]*)..(?<msg>.*)
在流畅的文档中,他们谈到了使用 ,但我无法理解如何在正则表达式中正确使用它。\m
答:
1赞
FreeSoftwareServers
6/8/2023
#1
在该部分中从多行切换到多行
使情况变得更好。我能够定义“日志格式的开始”,并且它理解为继续每行的最后一个日志,直到收到新的“日志开始”的匹配项。regex
parse
<parse>
@type multiline
format_firstline /\d{1,2}\/\d{1,2}\/\d{4}\s\d{2}:\d{2}:\d{2}.\d+/
format1 /^(?<time>\d{1,2}\/\d{1,2}\/\d{4}\s\d{2}:\d{2}:\d{2}.\d+)...(?<type>.[^| ]*)...(?<class>.[^| ]*)..(?<msg>.*)/
</parse>
评论
/m
/regex/m
/flag
rubular
/
flag
regex
multi-line