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] - 已建立会话 0x15d964d654646f4,协商超时对于客户端 /10.191.202.89:56232

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

  1. QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181应该映射到线程 id 。
  2. ZooKeeperServer应该映射到类名
  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 上的在线测试结果

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章