Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logstash:可选匹配未按预期工作_Logstash_Logstash Grok - Fatal编程技术网

Logstash:可选匹配未按预期工作

Logstash:可选匹配未按预期工作,logstash,logstash-grok,Logstash,Logstash Grok,假设我收到两种消息 1/1/12 dasdahdgh 1/1/12 asd.ert.Tghagsdh 现在我想要这样的东西 %{DATE_US:time}%{SPACE}(%{WORD:stat}|(?<java_method>[a-zA-Z\.]+)) 我如何配置我的grok,以便只创建stat或java\u方法中的一个?我制作了一个正则表达式,其中必须有一个点,因此它将捕获asd.ert.Tghagsdh,而不是dasdahgh。通过将它放在%{WORD}之前,它将捕获jav

假设我收到两种消息

1/1/12 dasdahdgh
1/1/12 asd.ert.Tghagsdh
现在我想要这样的东西

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

我如何配置我的grok,以便只创建
stat
java\u方法
中的一个?

我制作了一个正则表达式,其中必须有一个点,因此它将捕获
asd.ert.Tghagsdh
,而不是
dasdahgh
。通过将它放在
%{WORD}
之前,它将捕获java“方法”(它看起来更像一个类),而不是stat:

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

因此,您的字段中会有正确的值。

我制作了一个正则表达式,其中必须有一个点,因此它将捕获
asd.ert.Tghagsdh
,但不会捕获
dasdahgh
。通过将它放在
%{WORD}
之前,它将捕获java“方法”(它看起来更像一个类),而不是stat:

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

因此,您的字段中会有正确的值。

还有助于您:,and。还有助于您:,and。如果java方法没有任何包名,这是否合适?例如,有时这可能只是没有完整包的方法的名称path@AbtPst如果没有包路径,那么方法名称中就不会有任何点,字符串也不会出现在
java\u方法
字段中,因为对于
java\u方法
,需要有一个点。如果java方法没有任何包名,这是否合适?例如,有时这可能只是没有完整包的方法的名称path@AbtPst如果没有包路径,那么方法名称中就不会有任何点,字符串也不会出现在
java\u方法
字段中,因为对于
java\u方法
,需要有点。