这是我正在解析的示例日志模式。我正在使用grok,但这并不像我预期的那样
180528 8:46:26 2 Query SELECT 1
要解析此日志,我的grok模式是
%{NUMBER:date} %{NOTSPACE:time}%{INT:pid}%{GREEDYDATA:message}
并在grok调试器中为此输出
> { "date": [
> [
> "180528"
> ] ], "time": [
> [
> "8:46:2"
> ] ], "pid": [
> [
> "6"
> ] ], "message": [
> [
> " 2 Query\tSELECT 1"
> ] ] }
如果你在输出中观察到,pid正在从时间中提取,而实际的pid是2正在消息中合并。不知道这里出了什么问题。
答案 0 :(得分:0)
为什么不能将您的时间与TIME
模式匹配?将它与等于NOTSPACE
的{{1}}匹配是没有意义的,并匹配任何非空白字符(等于\S+
)
您可以使用[^\r\n\t\f\v ]
模式作为时间价值,使用TIME
作为INT
,如下所示,
pid
这会给你,
%{NUMBER:date}\s%{TIME:time}\s%{INT:pid}\s%{GREEDYDATA:message}