【问题标题】:Append a tag to every log message for log4j2为 log4j2 的每条日志消息附加一个标签
【发布时间】:2016-04-04 06:29:13
【问题描述】:

我正在尝试在 log4j2 的每条日志消息中附加一个标签(一个字符串),并且该消息将传递给套接字 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.........

【问题讨论】:

    标签: java apache logging log4j log4j2


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回答,但我发现这篇文章说“RewriteAppender 将无法使用 SimpleMessage 或 ParameterizedMessages 做任何事情”link
    猜你喜欢
    • 1970-01-01
    • 2017-11-23
    • 2020-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多