如何在记录之前修改log4j2消息?

时间:2017-05-29 17:22:44

标签: java logging log4j2

我希望能够为每条日志消息执行一个方法,以便在记录之前动态修改该消息。我知道有些过滤器允许我指示是否应该记录消息,但我不想阻止消息被记录,我只想在记录之前修改它。我怎么能这样做呢?

注意:我问过关于log4j2的这个问题,但我也对其他流行的Java日志框架开放。

2 个答案:

答案 0 :(得分:1)

您可以实现自己的appender。

http://logging.apache.org/log4j/2.x/manual/appenders.html#RewriteAppender

只需扩展您正在使用的当前appender并添加您需要的行为,或者只使用RewriteAppender

RewriteAppender RewriteAppender允许LogEvent在被另一个Appender处理之前进行操作。这可用于屏蔽敏感信息(如密码)或将信息注入每个事件。必须使用RewritePolicy配置RewriteAppender。应该在它引用的任何Appender之后配置RewriteAppender以允许它正确关闭。

答案 1 :(得分:1)

别忘了工厂方法:)

    @PluginFactory
    public static MarkerInjectorRewritePolicy createPolicy() {
        return new MarkerInjectorRewritePolicy();
    }

这是我的github帐户上的一个工作示例: https://github.com/sercasti/Log4j-RewriteAppender/