【问题标题】:Profile-dependent log4j2 configuration with Spring使用 Spring 的依赖于配置文件的 log4j2 配置
【发布时间】:2020-01-07 18:05:51
【问题描述】:

我正在尝试在带有 Gradle 的 Spring Boot 应用程序中使用 log4j2。我有 4 个不同的个人资料:it, dev, mac, was。相应地,我有 4 个不同的 log4j2 配置文件:log4j2-it.xml, log4j2-dev.xml, log4j2-mac.xml, log4j2-was.xml。根据所选配置文件,我想选择正确的 log4j2 配置文件,以便对其进行相应配置。

首先,为了让 log4j2 正常工作,我排除了 spring-boot-starter-logging 并包含在内 spring-boot-starter-log4j2。在这样做之前,log4j2 根本不起作用。

我已经查看了this post,但我无法得到公认的答案。根据this post,设置 logging.config 属性不起作用。此外,我的项目没有启动脚本,因此我无法使用 -D 标志传递参数。

我已经能够通过添加一个 log4j2.component.properties 文件并指定要在其中使用的配置文件 (see here),但是我还没有找到一种方法来使这个配置文件依赖。

此外,如果我有一个名为 log4j2.xml 的文件,则会按预期发现并加载该文件。

在进行了大量搜索之后,我看到了许多 logback 的解决方案,并尝试了他们是否可以使用 log4j2,但不出所料,这些都没有成功。

我有办法做到这一点吗?例如,在运行测试时,选择了it 配置文件,并且应该使用log4j2-it.xml 文件来配置日志记录。也许我错过了一些东西,因为我希望配置文件特定的 log4j2 配置应该是可能的,但到目前为止我还没有找到任何可行的方法。

【问题讨论】:

    标签: spring spring-boot log4j2


    【解决方案1】:

    我最终添加了一个 @Component 和一个 @PostConstruct 方法,其中我做了

    LoggerContext context = (LoggerContext)LogManager.getContext(false);
    context.setConfigLocation(URI.create("path to file"));
    context.reconfigure();
    

    感谢alan7678的回答here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-02
      • 2014-10-18
      • 2015-04-12
      • 2017-09-07
      • 2011-05-05
      • 2020-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多