Regex logstash grok模式将标记保留为空

Regex logstash grok模式将标记保留为空,regex,pattern-matching,logstash,logstash-grok,Regex,Pattern Matching,Logstash,Logstash Grok,当找不到相应的标记时,我试图将其中一个模式保留为空白。但不知怎么的,下一场比赛被替换了 我有一个日志行如下 [2017-10-19 09:41:07,204: INFO/Worker-5] <test id = '123:4567', name = 'example_testcase'><TID:0b46030ee6f14055b41b796a4eebfef2><RID:01234567>POST some url to post [2017-10-19 0

当找不到相应的标记时,我试图将其中一个模式保留为空白。但不知怎么的,下一场比赛被替换了

我有一个日志行如下

[2017-10-19 09:41:07,204: INFO/Worker-5] <test id = '123:4567', name = 'example_testcase'><TID:0b46030ee6f14055b41b796a4eebfef2><RID:01234567>POST some url to post
[2017-10-19 09:41:07204:INFO/Worker-5]发布一些要发布的url
我尝试了下面的grok模式匹配

^\[%{TIMESTAMP_ISO8601:timestamp}%{DATA}%{LOGLEVEL:log_level}/%{DATA:work_id}\]%{SPACE}(?:<%{DATA:message_headers}>)?(<TID:%{DATA:tid}>)?(<RID:%{BASE10NUM:rid}>)?%{GREEDYDATA:log_message}
^\[%{TIMESTAMP\u ISO8601:TIMESTAMP}%{DATA}%{LOGLEVEL:log\u level}/%{DATA:work\u id}\]%{SPACE}(?:)?()()?()?%{GREEDYDATA:log\u message}
这与找到消息头一样有效,如果未找到,则消息头将被TID替换。 例:

[2017-10-19 09:41:07204:INFO/Worker-5]发布一些要发布的url

然后,grok模式应该将消息头留空。相反,TID位于消息头中。任何人都可以帮助实现此功能。

我在tid之后删除了可选表达式“?”,并且它可以工作。谢谢

[2017-10-19 09:41:07,204: INFO/Worker-5] <TID:0b46030ee6f14055b41b796a4eebfef2><RID:01234567>POST some url to post