Regex 是否在logstash筛选器中使用多行打印数据?
我试图使用multiline将日志文件中的许多行与相同的起始符号组合起来。在我的例子中,起始符号是#S#。它看起来像这样:Regex 是否在logstash筛选器中使用多行打印数据?,regex,logging,logstash,Regex,Logging,Logstash,我试图使用multiline将日志文件中的许多行与相同的起始符号组合起来。在我的例子中,起始符号是#S#。它看起来像这样: #S# dsifj sdfojosf sfjosdfoisdjf #S# dsfj sdojifoig dfpkgokdfgk 89s7fsjlk sdf #S# lsdffm dg;;dfgl djfg 930`e`fsd ... ... ... 注:随机字符仅用于模拟实际日志的内容 以下是为多行开始编写的内容: multiline { type => "
#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。如果要获取与特定模式不匹配的所有行,请使用否定 至于您的实际问题,multiline会将所有相关行放入“message”字段,包括换行符(\n,我假设\r您也在运行Windows,尽管我从未检查过)。然后,您可以搜索整个消息以获得所需的数据 因此,如果您这样设置输出:
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
如果正确设置多行过滤器
希望这有帮助