我已经成功地过滤了我的日志,但我想知道我是否可以使它更有效或"更好"的方式,而不是使用大量的"NOTSPACE"。下面是我的示例日志以及我的grok过滤器。
****更新为最新版本******
[15/09/28@09:40:23.467-0700] P-000685 T-956770080 2 WS 4GLTRACE Run shr/getpref.p " Traveler ID Format" [Main Block - docprep/frames.w @ 1016]
我的grok过滤器:
%{YEAR}/%{MONTHNUM}/%{MONTHDAY}@%{HOUR}:%{MINUTE}:%{SECOND}-%{INT:TIMEZONE}%{NOTSPACE:BRACKET}%{SPACE}%{NOTSPACE:PID}%{SPACE}%{NOTSPACE:T}%{SPACE}%{INT:NUM}%{SPACE}%{NOTSPACE:WS}%{SPACE}%{NOTSPACE:4GLTRACE}%{SPACE}%{NOTSPACE:STATUS}%{SPACE}%{NOTSPACE:MAINPROGRAM}%{GREEDYDATA:SUBPROGRAM}%{SPACE}%{NOTSPACE:BRACKET}
任何提示将不胜感激!
可以在模式中使用括号,但是必须转义开头的括号,因此:
[ .... ]
可以在你的日期/时间前后使用。
另外,您可以使用%{TIME}来代替三个单独的模式。
您的几个%{NOTSPACE}可能是%{WORD},这可能在几个月后当您重新访问grok{}时更有意义。%{WORD}是bw+b,它将包括字母数字字符和下划线。
当你知道只有一个字面值的空格时,你可以在你的模式中使用:
%{WORD} %{WORD}
也可以提高可读性。
我还尝试为"最后的额外内容"保留GREEDYDATA。查看%{QS}的引号字符串。