我尝试使用以下日志记录格式获取某种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
答案 0 :(得分:5)
您是否尝试使用反斜杠转义括号?
与\[%{WORD:module}\]
答案 1 :(得分:0)
问题不是关于[]一个简单的零或更多运算符的转义(?)应该这样做:
(?\[%{WORD:module}?]\s+)
(第二次?)