【问题标题】:How to modify a log4j2 message before it is logged?如何在记录之前修改 log4j2 消息?
【发布时间】:2017-05-30 11:30:16
【问题描述】:

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

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

【问题讨论】:

    标签: java logging log4j2


    【解决方案1】:

    不要忘记工厂方法:)

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

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

    【讨论】:

      【解决方案2】:

      您可以实现自己的附加程序。

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

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

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

      【讨论】:

      • 我实现了一个 RewritePolicy 但我没有正确注册它。我尝试关注this example,但最终收到此错误:“无法在类中调用工厂方法......”。知道如何正确注册这个 RewritePolicy 吗?
      猜你喜欢
      • 2018-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-10
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多