Logstash Multiline过滤器

时间:2014-10-23 19:29:24

标签: multiline logstash

每当我们遇到php错误时,我们都会将一些文件写入我们的Web服务器。每个错误都有自己的文件,但每个文件中总有多行。文件始终以文本" Excepton:"开头。有没有办法轻松地说,"将整个文件作为日志事件?"见下面的例子:

Exception: ABC_Exception_Domain -- Message: There is no valid performance dimension for the given nodeRootId.
Error Date and Time:
    Date: September 25, 2014
    Time: 10:38:15
    Timestamp: 1411659495
    PersonId: 3947680
    ProcessId: 18055
    Memory Usage: 18194784
    Machine Id:...

这是我用来测试输出的配置文件:

input {
  file {
    type => "stack_trace"
    path => [ "/root/20[1-9][0-9]*" ]
    start_position => "beginning"
  }
}
filter {
  multiline {
    type => "stack_trace"
    pattern => "^Exception.*$"
    negate => true
    what => "previous"
  }
}
output {
   stdout {
      codec => rubydebug
   }
}

我也尝试过将最后一行用作日志分隔符:

input {
  file {
    type => "stack_trace"
    path => [ "/root/20[1-9][0-9]*" ]
    start_position => "beginning"
  }
}
filter {
  multiline {
    type => "stack_trace"
    pattern => "^#[0-9]{1,3} \{main\}.*$"
    negate => true
    what => "previous"
  }
}
output {
   stdout {
      codec => rubydebug
   }
}

我获得任何结果的唯一方法是手动更新文件并添加另一个例外或主线。

提前感谢您的帮助,如果我能提供更多信息,请告诉我。 谢谢,

克里斯。

0 个答案:

没有答案