您好我正在通过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匹配和替换两个模式的正确方法是什么?
答案 0 :(得分:2)
试试这个:
%replace{ %replace{%msg}{'}{"} }{\{|\}}{""}
结果是:
"" "name":"person", age:"42" ""
我希望它有所帮助。