Spring Boot具有自动检测可用的任何日志框架的功能(基于列在org.springframework.boot.logging.LoggingSystem.SYSTEMS
中的类的存在-Logback、Log4j或JUL),并从应用程序提供的日志配置文件或Spring Boot自己的默认配置文件(打包在Spring Boot中)中进行配置。
当将Grails 3应用程序部署为war文件到JBoss EAP 6(又名WildFly 7)时,这会导致问题。 当应用程序初始化时,Spring Boot会找到JUL的JBoss提供的日志实现 (org.jboss.logmanager.LogManager
),并调用它的readConfiguration()
方法,这会破坏日志配置。
- 我想继续使用JBoss提供的日志实现和JBoss提供的日志配置,而不是在我的war文件中打包一个单独的日志实现。这使我能够从服务器配置文件中配置所有我的应用程序。
相关源代码:
可能的想法:
- 如何在
LoggingApplicationListener
接收到ApplicationStartedEvent
或ApplicationEnvironmentPreparedEvent
事件之前,从应用监听器列表中删除它(这会触发日志配置)?
这些相关问题无法解决我的问题,因为使用情况不同:
- 禁用Spring Boot中的自动日志配置
- Spring Boot和JBoss 8 Wildfly日志配置应用程序
- Spring-boot应用程序配置
- 部署为.war文件时的Spring-Boot日志配置
版本:
- Spring Boot - 1.3.3.RELEASE
- Grails - 3.1.5