Spring Boot有一个功能,可以自动检测任何可用的日志框架(基于org.springframework.boot.logging.LoggingSystem.SYSTEMS
中列出的类的存在 - Logback,Log4j或JUL),并从应用程序提供的日志配置文件中进行配置或Spring Boot自带的默认配置文件,与Spring Boot本身一起打包。
将Grails 3应用程序作为war文件部署到JBoss EAP 6(a.k.a.WildFly 7)时会出现问题。 当应用程序初始化时,Spring Boot会找到JBoss提供的JUL日志记录实现(org.jboss.logmanager.LogManager
),并在其上调用readConfiguration()
方法,这会弄乱记录配置。
有没有办法禁用Spring Boot自动配置日志记录?(我可以使用Spring Boot 检测并使用日志记录框架;我只是不希望它尝试配置它。)我查看了源代码,但没有看到任何钩子来控制它。
相关源代码:
可能的想法:
LoggingApplicationListener
,然后才收到ApplicationStartedEvent
或ApplicationEnvironmentPreparedEvent
事件(触发日志记录配置)?这些其他相关问题没有解决了我的问题,因为用例不同:
版本:
答案 0 :(得分:5)
在Spring Boot 1.3.x中,您可以编写 ["��id"]=>
的自定义实现,但不执行任何操作,然后将org.springframework.boot.logging.LoggingSystem
系统属性设置为自定义实现的完全限定类名。
我是Spring Boot 1.4.x,不需要自定义实现,您只需将org.springframework.boot.logging.LoggingSystem
系统属性设置为org.springframework.boot.logging.LoggingSystem
即可。
答案 1 :(得分:1)
这不是每个人的答案,但有些线索,你告诉我它是否有帮助:
你看到了吗? How-To Configure Logging for Spring-Boot + JBOSS 7.1 Server
此外,在Spring Boot 1.4中进行了修复(如果它确实为您修复了,您可以选择升级):Spring Boot Logging initialization
我对修复的理解:它延迟了记录器的初始化,允许你以编程方式定义java.util.logging.manager:
System.setProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager")