Logstash:可选匹配无法按预期工作

时间:2016-09-28 14:38:24

标签: logstash logstash-grok

假设我有两种消息进入

1/1/12 dasdahdgh
1/1/12 asd.ert.Tghagsdh

现在我想要这样的东西

%{DATE_US:time}%{SPACE}(%{WORD:stat}|(?<java_method>[a-zA-Z\.]+))

如果我在日期之后看到一个单词,我想称之为stat。如果我看到java方法的名称,那么我想将其称为java_method

然而,我得到的结果是

{"time":1/1/12, "stat":"dasdahdgh", "java_method":""}
{"time":1/1/12, "stat":"asd", "java_method":".ert.Tghagsdh"}

如何配置我的grok以便创建 statjava_method

1 个答案:

答案 0 :(得分:2)

我制作了一个必须有一个点的正则表达式,因此它会捕获asd.ert.Tghagsdh但不会捕获dasdahdgh。通过将它放在%{WORD}之前,它将捕获java&#34;方法&#34; (它看起来更像是一个类),但不是统计数据:

%{DATE_US:time}%{SPACE}((?<java_method>(?:[a-zA-Z]+\.)+[a-zA-Z]+)|%{WORD:stat})

所以你在你的领域中拥有正确的价值观。