使用Spring

时间:2019-09-04 20:31:11

标签: spring spring-boot log4j2

我试图在带有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,但无法获得公认的答案。根据{{​​3}},将 logging.config媒体资源无效。此外,我的项目没有启动脚本,因此无法使用带有-D标志的参数。

我已经能够通过添加一个选择配置文件之一 log4j2.component.properties文件并指定要在其中使用的配置文件(this post),但是我还没有找到一种使该配置文件相关的方法。

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

经过大量搜索之后,我看到了很多用于logback的解决方案,并尝试了一下它们是否适用于log4j2,但不足为奇的是,没有一个成功。

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

1 个答案:

答案 0 :(得分:0)

我最终用@Component方法添加了@PostConstruct

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

感谢alan7678的回答here