有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

大家好,我正在通过一个xml文件配置log4j2。我已经设置了一个appender,它的日志记录正常。我在配置两个正则表达式以替换日志中%message变量中的文本时遇到问题

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

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

我将这些日志发送到卡夫卡,并希望用“”替换所有{or},用“”替换所有{or}

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

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

但是,这不起作用,由于更换,我收到了以下解析消息:

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

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


共 (1) 个答案

  1. # 1 楼答案

    试试这个:

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

    结果是:

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

    我希望有帮助