Java 调试日志记录导致Spring Boot 2.0.3.0版本中出现StackOverflowerError
我最近将我的Spring Boot应用程序从1.5.10升级到了2.0.3,现在面临着这个问题:当我将Java 调试日志记录导致Spring Boot 2.0.3.0版本中出现StackOverflowerError,java,spring-boot,Java,Spring Boot,我最近将我的Spring Boot应用程序从1.5.10升级到了2.0.3,现在面临着这个问题:当我将logging.level.root=DEBUG添加到我的application.properties时,我遇到了以下异常: log4j:WARN No appenders could be found for logger (org.springframework.web.context.support.StandardServletEnvironment). log4j:WARN Pleas
logging.level.root=DEBUG
添加到我的application.properties
时,我遇到了以下异常:
log4j:WARN No appenders could be found for logger (org.springframework.web.context.support.StandardServletEnvironment).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "background-preinit" java.lang.StackOverflowError
at org.slf4j.bridge.SLF4JBridgeHandler.getSLF4JLogger(SLF4JBridgeHandler.java:198)
at org.slf4j.bridge.SLF4JBridgeHandler.publish(SLF4JBridgeHandler.java:293)
at java.util.logging.Logger.log(Logger.java:738)
at java.util.logging.Logger.doLog(Logger.java:765)
at java.util.logging.Logger.logp(Logger.java:931)
at org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:180)
at org.apache.juli.logging.DirectJDKLog.debug(DirectJDKLog.java:103)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1154)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)
at org.slf4j.bridge.SLF4JBridgeHandler.getSLF4JLogger(SLF4JBridgeHandler.java:198)
at org.slf4j.bridge.SLF4JBridgeHandler.publish(SLF4JBridgeHandler.java:293)
at java.util.logging.Logger.log(Logger.java:738)
at java.util.logging.Logger.doLog(Logger.java:765)
at java.util.logging.Logger.logp(Logger.java:931)
at org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:180)
at org.apache.juli.logging.DirectJDKLog.debug(DirectJDKLog.java:103)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1154)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)
at org.slf4j.bridge.SLF4JBridgeHandler.getSLF4JLogger(SLF4JBridgeHandler.java:198)
at org.slf4j.bridge.SLF4JBridgeHandler.publish(SLF4JBridgeHandler.java:293)
...
这只是一小部分,因为这组堆栈跟踪重复超过100次,导致stackoverflowerrror
我尝试过的调试步骤:
- 如果我将日志记录级别更改为其他级别,如
,则不会出现异常李>INFO
- 我在我的
中为pom.xml
添加了一个特定的依赖项SLF4JBridgeHandler
- 我已确保
位于我的web应用程序的类路径上SLF4JBridgeHandler
slf4j-jdk14.jar
,即
SLF4J
,将强制将SLF4J
调用委派给jul
。上
另一方面,存在jul-to-slf4j.jar
,以及安装
通过调用“SLF4JBridgeHandler.install()
”来执行的
将jul
记录路由到SLF4J
。因此,如果两个jar都存在
同时(并且安装了SLF4JBridgeHandler
)slf4j
调用
将委托给jul
,jul
记录将发送给
SLF4J
,导致无休止的循环
你的案子就是这样的。
尝试执行
mvn依赖项:树
,并排除冲突的依赖项
在我看来,
springboot
善于管理这样的依赖关系。因此,最好保持pom.xml
干净,减少手动添加的依赖项。slf4j的版本是什么?您是否在pom.xml中手动配置它们?如果是,你能给我们看一下pom.xml吗?添加logging.level.org.apache.juli.logging.DirectJDKLog=INFO
@RajaAnbazhaganslf4j api
jar的版本是1.7.25
,它是从我的spring-security saml dsl-core
依赖项导入的。看起来你的slf4j正试图将日志重定向到java.util.logging和它再次将日志重定向到slf4j,导致无限循环。我想我在文件的某个地方读到了这个。。。Wait@Andreas我添加了它,得到了相同的异常,没有创建新的输出。这很有效!在我的pom.xml
中依赖于jul-to-slf4j.jar
,这导致了问题。删除了依赖项,运行了mvn clean package,很好!另外,你能提供一个链接到你从中摘录的完整文档吗?