我想用一个匹配器定义一个logstash过滤器,因为在一个.log文件中有更多类型的记录消息。 当我检查是否有一个日志文件时,我定义了更多分离的过滤器,然后只是在行上运行的第一个过滤器。
答案 0 :(得分: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/ {
...
}