当前位置: 首页 > 知识库问答 >
问题:

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

斜向文
2023-03-14

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

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

共有2个答案

伊温书
2023-03-14

您可以实现自己的appender。

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

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

RewriteAppender RewriteAppender允许在日志事件被另一个Appender处理之前对其进行操作。这可用于屏蔽密码等敏感信息,或将信息注入每个事件。必须使用重写策略配置重写器。重写appender应该在它引用的任何appender之后进行配置,以允许它正确关闭。

欧君之
2023-03-14

不要忘记工厂方法:)

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

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

 类似资料:
  • 我试图从log4j1更改为log4j2。我所做的: 已删除旧配置文件log4j。xml 创建了新的配置文件log4j2。xml 创建了jboss部署结构。xml 编辑的pom 环境:野蝇10 1 EAR 4 WAR文件中没有使用web.xml。以前的log4j配置日志在EAR中(仅) Log4j2配置文件 Jboss部署结构 新的maven依赖关系 我之前说过我在SLF4j中使用log4j1。这些

  • 互联网上有许多帖子建议如何从logback迁移到log4j2进行Spring引导日志记录。 参考这个sof post-Spring Boot日志与log4j2-我已经配置我的项目使用log4j2。然后我添加了一些基本的log4j2.xml和log4j2.properties文件来测试。 但是在这些更改之后,我的项目无法进行任何日志记录。有人能帮我找出毛病吗? 项目代码可在github-https:

  • 假设我们构建了一个JavaSDK,不同的项目可以通过将其添加为类路径中的jar或添加为mavenpom.xml或gradle文件中的依赖项来使用它。当其他项目使用该库时,SDK中的日志在运行时不可见。我尝试使用SL4J,当其他项目使用它时,没有一个日志在运行时可见。我应该用log4j2吗?如果是,我应该在我的SDK中提供log4j配置 /properties文件吗?是否会在运行时从消费者库中提取属

  • 是的,我已经阅读了所有相关的问题。我正在使用log4j2(尝试了2.4版和更新到最新的2.6.2版)。 我有一个面向客户的小型实用程序。我渴望将暴露的配置保持在最低限度。但对于有问题的情况,我还想添加一个标志,以便在运行时启用调试日志。 这是我启用调试日志记录的代码 但它实际上并不适用于这些情况: 实用程序通常在30秒内完成,因此更改应该是即时的。这是log4j2。xml 使用AppenderRe

  • 我将log4j2与xml配置一起使用。我想记录由 如何在log4j2 xml配置文件中配置它来记录这些?

  • 我在应用程序中使用Log4JV2.0Beta3进行日志记录,并且在运行单元测试时生成日志消息。我检查了API以确定将日志级别设置为关键级别的方法,但我找不到任何方法来更改日志程序配置。 事实上,我是在log4j2网站上读到的: