如何在tomcat上部署多个Spring Boot应用程序时指定logging.config

我有多个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

上一篇:java – 当我编写相同的UTF-8时,为什么Log4J2输出在两个系统上有所不同?


下一篇:Log4j2异步日志 与 垃圾回收