diff --git a/core/spring-boot/src/main/java/org/springframework/boot/logging/logback/LogbackLoggingSystem.java b/core/spring-boot/src/main/java/org/springframework/boot/logging/logback/LogbackLoggingSystem.java index b772c0885e36..d1789bad5877 100644 --- a/core/spring-boot/src/main/java/org/springframework/boot/logging/logback/LogbackLoggingSystem.java +++ b/core/spring-boot/src/main/java/org/springframework/boot/logging/logback/LogbackLoggingSystem.java @@ -114,6 +114,9 @@ public FilterReply decide(Marker marker, ch.qos.logback.classic.Logger logger, L private boolean bridgeHandlerInstalled; + @Nullable + private java.util.logging.Handler defaultRootHandler; + public LogbackLoggingSystem(ClassLoader classLoader) { super(classLoader); } @@ -181,6 +184,7 @@ private void removeDefaultRootHandler() { java.util.logging.Logger rootLogger = LogManager.getLogManager().getLogger(""); Handler[] handlers = rootLogger.getHandlers(); if (handlers.length == 1 && handlers[0] instanceof ConsoleHandler) { + this.defaultRootHandler = handlers[0]; rootLogger.removeHandler(handlers[0]); } } @@ -342,10 +346,19 @@ public void cleanUp() { removeJdkLoggingBridgeHandler(); this.bridgeHandlerInstalled = false; } + restoreDefaultRootHandler(); context.getStatusManager().clear(); context.getTurboFilterList().remove(SUPPRESS_ALL_FILTER); } + private void restoreDefaultRootHandler() { + if (this.defaultRootHandler != null) { + java.util.logging.Logger rootLogger = LogManager.getLogManager().getLogger(""); + rootLogger.addHandler(this.defaultRootHandler); + this.defaultRootHandler = null; + } + } + @Override protected void reinitialize(LoggingInitializationContext initializationContext) { LoggerContext loggerContext = getLoggerContext();