From 06b4007ce41d3cf143c39e3967f74fff4a2caecc Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Mon, 30 Jul 2018 13:00:34 +0100 Subject: [PATCH] Avoid installing unwanted ConsoleHandler when cleaning up Closes gh-13470 --- .../boot/logging/Slf4JLoggingSystem.java | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/Slf4JLoggingSystem.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/Slf4JLoggingSystem.java index 92fb601b503..108e4b0d4b0 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/Slf4JLoggingSystem.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/Slf4JLoggingSystem.java @@ -50,7 +50,6 @@ public abstract class Slf4JLoggingSystem extends AbstractLoggingSystem { public void cleanUp() { if (isBridgeHandlerAvailable()) { removeJdkLoggingBridgeHandler(); - reinstateConsoleHandlerIfNecessary(); } } @@ -81,17 +80,18 @@ public abstract class Slf4JLoggingSystem extends AbstractLoggingSystem { * @since 2.0.4 */ protected final boolean isBridgeJulIntoSlf4j() { - return isBridgeHandlerAvailable() && isJulUsingItsDefaultConfiguration(); + return isBridgeHandlerAvailable() && isJulUsingASingleConsoleHandlerAtMost(); } protected final boolean isBridgeHandlerAvailable() { return ClassUtils.isPresent(BRIDGE_HANDLER, getClassLoader()); } - private boolean isJulUsingItsDefaultConfiguration() { + private boolean isJulUsingASingleConsoleHandlerAtMost() { Logger rootLogger = LogManager.getLogManager().getLogger(""); Handler[] handlers = rootLogger.getHandlers(); - return handlers.length == 1 && handlers[0] instanceof ConsoleHandler; + return handlers.length == 0 + || (handlers.length == 1 && handlers[0] instanceof ConsoleHandler); } private void removeJdkLoggingBridgeHandler() { @@ -117,11 +117,4 @@ public abstract class Slf4JLoggingSystem extends AbstractLoggingSystem { } } - private void reinstateConsoleHandlerIfNecessary() { - Logger rootLogger = LogManager.getLogManager().getLogger(""); - if (rootLogger.getHandlers().length == 0) { - rootLogger.addHandler(new ConsoleHandler()); - } - } - }