为log4j2的每条日志消息附加一个标记

时间:2015-12-30 09:41:34

标签: java apache logging log4j log4j2

我正在尝试将标记(字符串)附加到log4j2处的每条日志消息,并且该消息将传递给socket serializedlayout以进行输出。那么可以拦截日志消息并添加一些标签(字符串)吗?

下面是log4j2.xml

<Socket name="LOGSTASH" host="192.168.0.1" port="4567" immediateFlush="true" >
        <SerializedLayout />
</Socket>

以下是致电

private static final Logger log = LogManager.getLogger(aClazz.class);

private void aMethod(){
    log.error("ooops");
}

以下是原点输出

method : aMethod()
class : aClazz
level : error
message : ooops
trace.........

以下是预期输出

method : aMethod()
class : aClazz
level : error
message : [Some String] ooops
trace.........

1 个答案:

答案 0 :(得分:0)

因为您使用的是SerializedLayout,所以无法利用将ThreadContext值注入输出字符串的常规机制。但是,您可以将SocketAppender包装在RewriteAppender中并创建自定义重写策略以修改您希望的消息,包括通过插入ThreadContext值来修改消息。