我有多个Spring启动应用程序(X,Y,Z)打包为部署在我的tomcat上的war文件.我想使用log4j2作为我的应用程序的日志系统.因此,要更改说X的日志记录系统,在tomcat中我将Sping Boot Propery的“logging.config”值设置为指向/tomcat/apps/X/WEB-INF/classes/log4j2-spring.properties.通过这样做,日志工作对X来说很好.
闪回:
如果我们在application.properties中指定logging.config = classpath:log4j2.properties,那么当我们在Eclipse中运行作为Java应用程序时,日志记录就会起作用.但是,当我们在tomcat上将其部署为WAR文件时,Logging不起作用.
为了使它工作,我不得不在tomcat / bin / setenv.bat中放置logging.config = {Path-to-myapp} /log4j2.properties.
我的问题是,如果我有多个应用程序,那么如何为每个Spring Boot App设置logging.config.
Since logging is initialized before the ApplicationContext is created,
it is not possible to control logging from @PropertySources in Spring
@Configuration files. The only way to change the logging system or
disable it entirely is via System properties.
解决方法:
我觉得有一个bug. log4j2.properties/log4j2-spring.properties和log4j2-spring.xml的行为不一样.如果我们使用log4j2.properties,则应指定logging.config = classpath:log4j2.properties.另一方面,如果我们使用log4j2-spring.xml,则无需指定logging.config.
在我看来,这是一个需要修复的重要错误,允许多个Spring Boot Apps部署在同一台服务器上.
应该修复以支持org.springframework.boot.logging.log4j2.Log4J2LoggingSystem.getCurrentlySupportedConfigLocations()中的log4j2.properties