From 7634901fb3aa478afea408d77eaf886c3ac7149c Mon Sep 17 00:00:00 2001 From: Madhura Bhave Date: Tue, 5 May 2020 17:07:51 -0700 Subject: [PATCH] Return null when getting a logback logger that does not exist Closes gh-21292 --- .../logging/logback/LogbackLoggingSystem.java | 21 +++++++++++-------- .../logback/LogbackLoggingSystemTests.java | 8 +++++++ 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/LogbackLoggingSystem.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/LogbackLoggingSystem.java index 73425d702dc..6b241689151 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/LogbackLoggingSystem.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/logging/logback/LogbackLoggingSystem.java @@ -234,7 +234,16 @@ public class LogbackLoggingSystem extends Slf4JLoggingSystem { @Override public LoggerConfiguration getLoggerConfiguration(String loggerName) { - return getLoggerConfiguration(getLogger(loggerName)); + String name = getLoggerName(loggerName); + LoggerContext loggerContext = getLoggerContext(); + return getLoggerConfiguration(loggerContext.exists(name)); + } + + private String getLoggerName(String name) { + if (!StringUtils.hasLength(name) || Logger.ROOT_LOGGER_NAME.equals(name)) { + return ROOT_LOGGER_NAME; + } + return name; } private LoggerConfiguration getLoggerConfiguration(ch.qos.logback.classic.Logger logger) { @@ -243,10 +252,7 @@ public class LogbackLoggingSystem extends Slf4JLoggingSystem { } LogLevel level = LEVELS.convertNativeToSystem(logger.getLevel()); LogLevel effectiveLevel = LEVELS.convertNativeToSystem(logger.getEffectiveLevel()); - String name = logger.getName(); - if (!StringUtils.hasLength(name) || Logger.ROOT_LOGGER_NAME.equals(name)) { - name = ROOT_LOGGER_NAME; - } + String name = getLoggerName(logger.getName()); return new LoggerConfiguration(name, level, effectiveLevel); } @@ -270,10 +276,7 @@ public class LogbackLoggingSystem extends Slf4JLoggingSystem { private ch.qos.logback.classic.Logger getLogger(String name) { LoggerContext factory = getLoggerContext(); - if (StringUtils.isEmpty(name) || ROOT_LOGGER_NAME.equals(name)) { - name = Logger.ROOT_LOGGER_NAME; - } - return factory.getLogger(name); + return factory.getLogger(getLoggerName(name)); } private LoggerContext getLoggerContext() { diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/logging/logback/LogbackLoggingSystemTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/logging/logback/LogbackLoggingSystemTests.java index 2fab7a2f007..24326b64137 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/logging/logback/LogbackLoggingSystemTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/logging/logback/LogbackLoggingSystemTests.java @@ -206,6 +206,14 @@ class LogbackLoggingSystemTests extends AbstractLoggingSystemTests { .isEqualTo(new LoggerConfiguration(getClass().getName(), LogLevel.DEBUG, LogLevel.DEBUG)); } + @Test + void getLoggingConfigurationForLoggerThatDoesNotExistShouldReturnNull() { + this.loggingSystem.beforeInitialize(); + this.loggingSystem.initialize(this.initializationContext, null, null); + LoggerConfiguration configuration = this.loggingSystem.getLoggerConfiguration("doesnotexist"); + assertThat(configuration).isNull(); + } + @Test void getLoggingConfigurationForALL() { this.loggingSystem.beforeInitialize();