Logstash 在grok筛选器中区分数字和字母

Logstash 在grok筛选器中区分数字和字母,logstash,logstash-grok,Logstash,Logstash Grok,我有两条这样的日志行: [2020-04-01][14:57:31]E: Step 8/13: Main workflow (Python) (8m:48s) [2020-04-01][15:14:02]W: Cannot find Latest build with tag: 'ArtifactSizeBaseline' to calculate metric 'total artifacts size'. 和这样的匹配字符串 %{DATE:EventDate}\]\[%{TIME:Even

我有两条这样的日志行:

[2020-04-01][14:57:31]E: Step 8/13: Main workflow (Python) (8m:48s)
[2020-04-01][15:14:02]W: Cannot find Latest build with tag: 'ArtifactSizeBaseline' to calculate metric 'total artifacts size'.
和这样的匹配字符串

%{DATE:EventDate}\]\[%{TIME:EventTime}\](\s+)?%{WORD:Loglevel}:(\s+)?%{DATA:Step}:(\s+)%{GREEDYDATA:EventMessage}
对于语句1,我的输出应该如下所示:

{'EventDate':'2020-04-01', 'EventTime':'14:57:31', 'LogLevel':'E', 'Step':'Step 8/13', 'EventMessage':'Main workflow (Python) (8m:48s)'}
理想情况下,第二条日志线不包含步骤。因此,输出应该如下所示

{'EventDate':'2020-04-01', 'EventTime':'15:14:02', 'LogLevel':'W', 'Step':'', 'EventMessage':'Cannot find Latest build with tag: 'ArtifactSizeBaseline' to calculate metric 'total artifacts size'.'}
但我得到的是这个

{'EventDate':'2020-04-01', 'EventTime':'15:14:02', 'LogLevel':'W', 'Step':'Cannot find Latest build with tag: ', 'EventMessage':''ArtifactSizeBaseline' to calculate metric 'total artifacts size'.'}

匹配字符串是否有办法区分这两条日志行

此正则表达式匹配两行:

%{DATE:EventDate}\]\[%{TIME:EventTime}\](\s+)?%{WORD:Loglevel}:\s+((?=Step\s\b)%{DATA:Step}:)?\s?%{GREEDYDATA:EventMessage}
如果发现单词“Step”后跟一个空格和一个数字,它将使用正向前瞻以及可选的数据提取

在该站点上对两条线路进行了测试:


希望我能帮助您。

此正则表达式与以下两行匹配:

%{DATE:EventDate}\]\[%{TIME:EventTime}\](\s+)?%{WORD:Loglevel}:\s+((?=Step\s\b)%{DATA:Step}:)?\s?%{GREEDYDATA:EventMessage}
如果发现单词“Step”后跟一个空格和一个数字,它将使用正向前瞻以及可选的数据提取

在该站点上对两条线路进行了测试:


我希望我能帮助您。

您可以将字段步骤设置为如下可选:
%{DATE:EventDate}\\[%{TIME:EventTime}\](\s+)%{WORD:Loglevel}:(\s+)(步骤%{DATA:step}:)?(\s+%{greedydyddata:EventMessage}
。但这将改变您在步骤中得到的值:
步骤8/13->8/13
我建议的正则表达式解决了您的问题吗?如果您感到满意,如果您能接受我的正确答案,我将不胜感激。您可以将字段步骤设置为如下可选:
%{DATE:EventDate}\]\[%{TIME:EventTime}\](\s+)%{WORD:Loglevel}:(\s+)(\s+)({DATA:step}:)?(\s+%{greedyddata:EventMessage}
。但这将改变您在步骤中得到的值:
步骤8/13->8/13
我建议的正则表达式解决了您的问题吗?如果您感到满意,如果您能接受我的正确答案,我将不胜感激。