Hello!

I have jetty container with preconfigured logback configuration and custom appenders. When I try to load spring boot based WAR into container I receive StackOverflowError.

It looks like org.springframework.boot.logging.logback.LogbackLoggingSystem::FILTER causes recursive class loading.

Exception in thread "main" java.lang.StackOverflowError at java.io.UnixFileSystem.getBooleanAttributes0(Native Method) at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:242) at java.io.File.exists(File.java:821) at sun.misc.URLClassPath$FileLoader.getResource(URLClassPath.java:1377) at sun.misc.URLClassPath$FileLoader.findResource(URLClassPath.java:1344) at sun.misc.URLClassPath.findResource(URLClassPath.java:225) at java.net.URLClassLoader$2.run(URLClassLoader.java:572) at java.net.URLClassLoader$2.run(URLClassLoader.java:570) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findResource(URLClassLoader.java:569) at org.eclipse.jetty.webapp.WebAppClassLoader.loadAsResource(WebAppClassLoader.java:617) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:534) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:545) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) at org.springframework.boot.logging.logback.LogbackLoggingSystem$1.decide(LogbackLoggingSystem.java:88) at ch.qos.logback.classic.spi.TurboFilterList.getTurboFilterChainDecision(TurboFilterList.java:49) at ch.qos.logback.classic.LoggerContext.getTurboFilterChainDecision_0_3OrMore(LoggerContext.java:269) at ch.qos.logback.classic.Logger.callTurboFilters(Logger.java:751) at ch.qos.logback.classic.Logger.isDebugEnabled(Logger.java:469) at ch.qos.logback.classic.Logger.isDebugEnabled(Logger.java:465) at org.eclipse.jetty.util.log.JettyAwareLogger.isDebugEnabled(JettyAwareLogger.java:170) at org.eclipse.jetty.util.log.Slf4jLog.isDebugEnabled(Slf4jLog.java:120) at org.eclipse.jetty.webapp.WebAppContext.isServerClass(WebAppContext.java:793) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:545) [section from at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:545) repeats multiple times] I reproduced it in https://github.com/palex-fpt/jetty-spring-boot-logback

Used versions: java: 8 spring boot: 2.3.1.RELEASE logback: 1.2.3 jetty: 9.4

Comment From: wilkinsona

Thanks for the report. This is a duplicate of #3571. You can avoid the problem by setting the org.springframework.boot.logging.LoggingSystem system property to a value of none.