假设我有两种消息进入
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以便创建 stat
或java_method
答案 0 :(得分:2)
我制作了一个必须有一个点的正则表达式,因此它会捕获asd.ert.Tghagsdh
但不会捕获dasdahdgh
。通过将它放在%{WORD}
之前,它将捕获java&#34;方法&#34; (它看起来更像是一个类),但不是统计数据:
%{DATE_US:time}%{SPACE}((?<java_method>(?:[a-zA-Z]+\.)+[a-zA-Z]+)|%{WORD:stat})
所以你在你的领域中拥有正确的价值观。