NXLOG如何合并多行正则表达式

时间:2018-11-22 14:05:37

标签: regex multiline nxlog

我有这样的日志:

14:40:33.476 [WebContainer : 149] sometihng sometihng 
14:40:33.476 [WebContainer : 149] sometihng sometihng 
14:40:33.476 [WebContainer : 149] sometihng sometihng 
14:40:33.476 [WebContainer : 245] csometihng sometihng 
14:40:33.476 [WebContainer : 245] sometihng sometihng 
14:40:33.476 [WebContainer : 245] sometihng sometihng

我使用nxlog将其发送到kafka,我想要的是将带有“ WebContainer:149”的所有行合并为一个,然后在更改时合并下一行,依此类推。

1 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式捕获具有特定值的所有行:

/(.*\[WebContainer : (\d+)\]\s*(.*))+\s+.*\[WebContainer : \2\]\s(.*)+\s+.*\[WebContainer : \2\]\s(.*)+/g

正则表达式会匹配任何数量的任何字符,最多不超过'[WebContainer :',然后匹配任何数字和右方括号,然后再加上空格。

然后重新开始(换行),仅在这里使用捕获组2来指定编号。在第三行重复此操作。

然后将匹配项替换为:

$1$3$4

现在您将获得每个数字一行,并将每行的'sometihng'组合起来。