我正在尝试在带有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根本不起作用。
我已经看过这篇文章,但无法获得可接受的答案。根据这篇文章,设置logging.config
属性将不起作用。此外,我的项目没有启动脚本,因此无法将参数与-D
标志一起传递。
我已经能够通过添加一个log4j2.component.properties
文件并指定要在其中使用的配置文件来选择其中一个配置文件(请参阅此处),但是我还没有找到一种使该配置文件相关的方法。
另外,如果我有一个名为just的文件log4j2.xml
,则会按预期发现并加载该文件。
经过大量搜索之后,我看到了许多用于logback的解决方案,并尝试了一下它们是否适用于log4j2,但是毫无疑问,这些解决方案都没有成功。
我有办法做到这一点吗?例如,在运行测试时,it
将选择配置文件,并且该log4j2-it.xml
文件应用于配置日志记录。也许我错过了一些事情,因为我希望配置文件特定的log4j2配置应该可行,但是到目前为止,我还没有发现任何可行的方法。
我最终添加了@Component
一个@PostConstruct
方法,其中我确实
LoggerContext context = (LoggerContext)LogManager.getContext(false);
context.setConfigLocation(URI.create("path to file"));
context.reconfigure();
感谢alan7678 在这里的回答。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句