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



嗨,我正在通过一个 xml 文件配置 log4j2。我已经设置了一个追加器,它正在正确记录。我在配置两个正则表达式以替换日志的 %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 匹配和替换两种模式的正确方法是什么?

您需要将一个语句嵌套在另一个语句中%replace语句中。

试试这个:

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

结果是:

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

我希望它有所帮助。

最新更新