我可以通过编程方式设置Spring Boot的日志位置吗?

时间:2016-02-12 13:54:50

标签: java spring logging spring-boot logback

可以使用logging.file中的application.properties属性设置Spring Boot的日志记录位置。但是我想以编程方式设置位置。我的逻辑不是基于任何Spring bean,只是基于反复试验,因为相同的代码必须在不同的环境中运行,这些环境可能具有不同的安全配置。

根据the documentation

  

由于在创建ApplicationContext之前初始化日志记录,因此无法控制Spring @PropertySources文件中@Configuration的日志记录。系统属性和传统的Spring Boot外部配置文件都可以正常工作。)[原文如此]

所以我知道我不能使用@Configuration文件,但我可以使用其他方式,如静态初始化程序,并仍设法以编程方式设置日志记录位置吗?

(注意:我个人使用SLF4J和Logback,但Spring Boot的日志框架旨在应对不同的日志外观/实现,实际上在内部使用Commons Logging。)

(注2:有些人已经注意到这是another question的副本......但是这个问题似乎更多地是关于配置实际的日志记录实现,而这个问题是关于Spring Boot自己的配置。事实上,我无法立即从这些答案中确定如何解决我的具体问题,正如相关答案下面的评论所述。对其他问题的回答主要集中在如何在正确的上下文初始化点上加载代码,而我的问题是如何设置记录位置。)

1 个答案:

答案 0 :(得分:1)

还有另一个答案:Spring Boot programmatic logging configuration

基本上,可以通过SpringApplicationInitializer(实现ApplicationContextInitializer)来实现这一点

SpringApplication application = new SpringApplication(MySources.class);
application.addInitializers(new LoggingInitializer());
application.run(args);