0

我想定义一个带有多个匹配器的 logstash 过滤器,因为在一个 .log 文件中有更多类型的记录消息。当我检查我是否有一个日志文件并且我定义了更多分离的过滤器时,我只定义了在该行上运行的第一个过滤器。

4

1 回答 1

2

您可以使用grok具有多种模式的过滤器,也可以使用if语句进行条件解析。

要使用多种模式,您只需将它们列在grok

grok {
  match => [ "message", 
     "Error on line (?<line>\d+)",
     "Exception in (?<place>\d+)",
     "Something else"
  ]
}

Logstash 将按顺序评估它们并在其中一个匹配时停止(或给你一个_grokparsefailure如果不匹配的标签)

您可以做的另一件事是条件评估:

if [message] =~ /Some pattern/ {
   grok {
     match => ['message','Some pattern of (?<number>\d+) stuff']
   }
} else if [message] =~ /Some other pattern/ {
  ...
}
于 2014-09-18T13:23:57.060 回答