我希望能够为每条日志消息执行一个方法,以便在记录之前动态修改该消息。我知道有些过滤器允许我指示是否应该记录消息,但我不想阻止消息被记录,我只想在记录之前修改它。我怎么能这样做呢?
注意:我问过关于log4j2的这个问题,但我也对其他流行的Java日志框架开放。
答案 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/