请教使用 grok patterns 怎么匹配我这个情况?

2018-07-11 14:44:15 +08:00
 ashin

现在有日志内容

[2018-07-09 11:30:59] [13968] [INFO] [1e74b6b7-fcb2-4dde-a259-7db1de0350ea] run entry() 11ms
[2018-07-09 11:30:59] [13968] [INFO] [1e74b6b7-fcb2-4dde-a259-7db1de0350ea] entry done

第一行是记录函数执行时间,第二行是其他普通的 log,现在想要用 grok 匹配所有的日志,且当遇到以 NUMBER+ms 结尾的行我要提取这个时间

现在写的 pattern 要么只能匹配第一行 要么只能匹配第二行 不知怎么可以同时匹配两行,请教下大家。

我想的是这样的

\[%{TIMESTAMP_ISO8601:timestamp}\] \[%{NUMBER:process_id}\] \[%{LOGLEVEL:loglevel}\] \[%{UUID:request_id}\] %{DATA:message}(\s%{NUMBER:use_time}ms)?

但是这样结果是

{
  "process_id": "13968",
  "loglevel": "INFO",
  "message": "",
  "request_id": "1e74b6b7-fcb2-4dde-a259-7db1de0350ea",
  "timestamp": "2018-07-09 11:30:59"
}
1024 次点击
所在节点    程序员
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/469901

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX