多个正则表达式替换log4j2 xml模式标记

时间:2017-03-27 15:16:15

标签: java xml logging log4j log4j2

您好我正在通过xml文件配置log4j2。我已经设置了一个appender,它正在正确记录。我有问题配置两个正则表达式来替换我日志的%message变量中的文本。

我在我的java代码中记录消息,如下所示:

logger.info("{ 'name':'person', age:'42' }");

我将这些日志发送给Kafka,并希望将所有{或}替换为“”并将所有“替换为”。

我使用的当前模式如下所示:

<pattern>{ "logTimestamp":"%date{ISO8601}", %replace{%replace{%message{nolookups}}{\\"|\\'|"}{'}}{{|}}{},"host":"${hostname}" }</pattern>

然而,这不起作用,我因为替换而得到以下解析的消息:

{ "logTimestamp":"2017-03-27T11:11:17,247", %replace}{"}{'},"host":"hostname" }

使用log4j2%replace匹配和替换两个模式的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

试试这个:

%replace{ %replace{%msg}{&apos;}{&quot;} }{\{|\}}{&quot;&quot;}

结果是:

"" "name":"person", age:"42" ""

我希望它有所帮助。