log4j2中Pattern Layout 对消息体转义

log4j2中Pattern Layout 对消息体转义

最近做一个功能,需要将程序中输出的消息体进行转义处理。

功能简介:收集每一行日志,存储的ES中,用于别的使用目的。收集每一行日志,就需要在log4j中拼成固定的json格式,方便另一个服务进行内容读取和解析。

遇到的问题:程序中通过log.info(message)输出的消息千奇百怪,存在一部分message就包含一个完整的json格式,这就破坏了外层拼装的json格式。所以需要对msg进行转义处理。

解决方案

利用Pattern Layout 提供的标签:enc
enc可以处理4中格式的转义:{[HTML|XML|JSON|CRLF]},默认进行HTML转义。

示例:

默认处理,进行HTML格式转义

%enc{%m}

对其他类型转义处理,如JSON

%enc{%m}{JSON}

使用场景: {“message”: “%enc{%m}{JSON}”}

如需动态替换,可以借助log4的MDC

MDC key

%enc{%mdc{key}}

CLC

你可能感兴趣的:(java,json,log4j2,layout,java)