Logstash Grok regex表达式单独使用时可以正常工作,但与其他grok表达式组合在一起时就不能正常工作

eqoofvh9  于 2022-12-09  发布在  Logstash
关注(0)|答案(1)|浏览(116)

我的grok表达式在单独使用匹配字符串时工作正常,但当我将此grok表达式与其他grok表达式一起使用以捕获日志行中也存在的其他数据时,它与相同的匹配字符串不匹配。
情况1:当单独运行below log字符串时,Below grok表达式工作正常,值在字段targetMessage中捕获
日志字符串:Tracking : sent request to msgDestination Grok表达式:(?<targetMessage>^Tracking : (?:received response from|sent request to) msgDestination$)
情况2:当我尝试使用日志字符串中也存在的其他一些数据运行表达式时,它不起作用,即grok表达式与上面使用的相同字符串不匹配。
日志字符串:2022-11-26 8:16:39,873 INFO [task.SomeTask] Tracking : sent request to msgDestination : MODULE1|SERVICE1|20220330051054|TASK1
格罗表情:%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:loglevel} \[(?<classname>[^\]]+)\] (?<targetMessage>^Tracking : (?:received response from|sent request to) msgDestination$) : %{WORD:moduleName}\|%{WORD:service}\|%{INT:requestId}\|%{WORD:taskName}
使用的调试工具:https://grokdebug.herokuapp.com/
如果有人能告诉我我犯了什么错?

uqzxnwby

uqzxnwby1#

^和$分别将表达式锚定到 * 一行 * 的开头和结尾。您在targetMessage自定义模式中有这两个值,并且该值位于行的中间,因此两者都不匹配。请同时删除^和$

相关问题