【发布时间】:2017-05-30 11:30:16
【问题描述】:
我希望能够为每条日志消息执行一个方法,允许我在记录之前动态修改该消息。我知道有过滤器允许我指示是否应记录消息,但我不想阻止记录消息,我只想在记录之前对其进行修改。我该怎么做?
注意:我问过这个关于 log4j2 的问题,但我也对其他流行的 Java 日志框架持开放态度。
【问题讨论】:
我希望能够为每条日志消息执行一个方法,允许我在记录之前动态修改该消息。我知道有过滤器允许我指示是否应记录消息,但我不想阻止记录消息,我只想在记录之前对其进行修改。我该怎么做?
注意:我问过这个关于 log4j2 的问题,但我也对其他流行的 Java 日志框架持开放态度。
【问题讨论】:
不要忘记工厂方法:)
@PluginFactory
public static MarkerInjectorRewritePolicy createPolicy() {
return new MarkerInjectorRewritePolicy();
}
这是我的 github 帐户上的一个工作示例: https://github.com/sercasti/Log4j-RewriteAppender/
【讨论】:
您可以实现自己的附加程序。
http://logging.apache.org/log4j/2.x/manual/appenders.html#RewriteAppender
只需扩展您正在使用的当前 appender 并添加您需要的行为,或者简单地使用 RewriteAppender
重写Appender RewriteAppender 允许在 LogEvent 被另一个 Appender 处理之前对其进行操作。这可用于掩盖敏感信息(例如密码)或将信息注入每个事件。 RewriteAppender 必须配置一个 RewritePolicy。 RewriteAppender 应该在它引用的任何 Appender 之后配置,以允许它正确关闭。
【讨论】: