【问题标题】:Does using multiline in logstash filter print out the data?在 logstash 过滤器中使用多行是否打印出数据?
【发布时间】:2014-06-18 19:39:01
【问题描述】:

我正在尝试使用多行来组合日志文件中具有相同起始符号的多行。在我的例子中,起始符号是#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 解析整行。任何想法和意见都会有所帮助。谢谢。

【问题讨论】:

    标签: regex logging logstash


    【解决方案1】:

    如果您尝试匹配所有与“#S#”匹配的行,那么您应该将 negate 设置为 false。当你想得到所有不匹配某个模式的行时,你可以使用 negate。

    至于您的实际问题,多行将所有相关行放入“消息”字段中,包括换行符(\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
    

    如果您正确设置了多行过滤器。

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多