流利的日志源格式RegEX

时间:2015-02-25 21:58:57

标签: regex fluentd

我有这种格式的日志:

2015-02-25 18:33:06,975 INFO c.a.p.c.b.s.Monitor akka://application/user/daemons/monitor : 91 active threads, 4175691776 bytes used

我来到了这个正则表达式:

(?<time>[^ ]* [^ ]*) (?<method>[^ ]*) (?<path>[^ ]*) (?<message>[^ ].*$)

当我在Fluentular进行测试时 (我会用它作为流利的日志输入的格式)我得到 字段:

time  =>    2015/02/25 18:33:06 +0000
method  =>    INFO
PATH    =>  <empty>
message => c.a.p.c.b.s.Monitor akka://application/user/daemons/monitor : 91 active threads, 4175691776 bytes used

我无法破坏消息字符串。我希望匹配的组是:

time  =>    2015/02/25 18:33:06 +0000
method  =>    INFO
PATH  =>    c.a.p.c.b.s.Monitor
message =>    akka://application/user/daemons/monitor : 91 active threads, 4175691776 bytes used

什么是正确的正则表达式

1 个答案:

答案 0 :(得分:1)

问题是输入字符串中INFOc.a.p.c.b.s.Monitor之间有两个空格。添加+以允许该位置的一个或多个空格,您将获得:

(?<time>[^ ]* [^ ]*) (?<method>[^ ]*) +(?<path>[^ ]*) (?<message>[^ ].*$)

您可能想要也可能不想将这些内容添加到其他组件中,例如:

(?<time>[^ ]* [^ ]*) +(?<method>[^ ]*) +(?<path>[^ ]*) +(?<message>[^ ].*$)