[英]Logstash Grok regex expression works fine alone but doesn't work when grouped with other grok expressions
當單獨與匹配字符串一起使用時,我的 grok 表達式工作正常,但是當我將此 grok 表達式與其他 grok 表達式一起使用以捕獲日志行中也存在的其他數據時,它與相同的匹配字符串不匹配。
案例 1:下面的 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
Grok 表達式: %{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/
如果有人可以建議我在這里犯了什么錯誤?
^ 和 $ 分別將表達式錨定到行的開頭和結尾。 您在 targetMessage 自定義模式中同時擁有這兩個模式,並且位於該行的中間,因此兩者都不匹配。 刪除 ^ 和 $
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.