我正在尝试使用某种Grok模式来处理以下日志格式:
*Sun 07:05:18.372 INFO [main] [userID] perf - 0ms - select x from y
我遇到的问题是方括号中的字段,我在这里将其注释为userID。有时该字段已填充,而其他时候则未填充。如果我使用下面的grok模式:
*%{DAY:Day} %{TIME:Time} %{LOGLEVEL:Loglevel}\s+(\[%{WORD:module}\]\s+)(\[%{HOSTNAME:id}\]\s+)%{GREEDYDATA:logline}*
只要UserID字段中有一些数据,它就会正确解析。如果该字段为空(例如下面的示例),则无法匹配。非常感谢您的任何想法!
*Sun 07:05:18.372 INFO [main] [] perf - 0ms - select x from y