我正在尝试使用多行将具有相同起始符号的日志文件中的许多行组合在一起。在我的情况下,起始符号是#S#。它看起来像这样:
#S# dsifj sdfojosf sfjosdfoisdjf
#S# dsfj sdojifoig dfpkgokdfgk 89s7fsjlk sdf
#S# lsdffm dg;;dfgl djfg 930`e`fsd
...
...
...
注意:随机字符仅用于模仿实际日志的内容。
以下是多行开始的内容:
multiline {
type => "table_init"
pattern => "#S#"
negate => true
what => "next"
}
我假设我写的内容确实将它们合并为一行,但是我想知道这是否打印出这一行,还是我需要在打印前使用gork来解析整行。任何想法和意见都会有所帮助。谢谢你。
如果您要匹配所有与“#S#”匹配的行,则应将求反设置为false。当您想获取所有不匹配特定模式的行时,可以使用求反法。
至于您的实际问题,多行将所有相关的行放入“消息”字段中,包括换行符(\ n,如果您也正在运行Windows,我假设为\ r,尽管我从未检查过)。然后,您可以查看整个消息以获取所需的数据。
因此,如果您这样设置输出:
output { stdout { codec => rubydebug } }
您应该发现输出的消息将显示为:
"message" = "#S# dsifj sdfojosf sfjosdfoisdjf \n#S# dsfj sdojifoig dfpkgokdfgk 89s7fsjlk sdf\n#S# lsdffm dg;;dfgl djfg 930`e`fsd
如果您正确设置了多行过滤器。
希望这可以帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句