grok 的自定义正则表达式

Custom regular expression for grok

我的问题是关于 logstash 中的 grok 过滤器。对于 logstash 过滤器,我需要解析一个日志文件。下面的示例日志语句

2017-07-31 09:01:53,135 - INFO [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:ZooKeeperServer@617] - Established session 0x15d964d654646f4 with negotiated timeout 5000 for client /10.191.202.89:56232

我想使用正则表达式解析 [] 之间的语句但没有成功?从上面的行

  1. QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181 应映射到线程 ID。
  2. ZooKeeperServer 应映射到 class 名称
  3. 617 应映射到行号

谁能帮我解决这个问题的正则表达式?

您可以使用

\[(?<threadid>\w+[^/]*/[\d:]+):(?<classname>[^\]@]+)@(?<linenumber>\d+)\]

详情

  • \[ - 文字 [
  • (?<threadid>\w+[^/]*/[\d:]+) - 组 "threadid":1+ 个单词字符,然后是 // 以外的 0+ 个字符,然后是 1 个或多个数字或 : (请注意,您可以根据需要调整此模式,例如,它也可以写成 (?<threadid>.*?[\d:]+) 但它不会那么安全)
  • : - 冒号
  • (?<classname>[^\]@]+) - 组 "classname":]@
  • 以外的 1 个或多个字符
  • @ - 一个 @ 字符
  • (?<linenumber>\d+) - 组 "linenumber":1 个或多个数字
  • \] - 文字 ].

grokdebug.herokuapp.com在线测试结果: