From 69e1d119fe3b26e8371d98b1419a987d802c96db Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 8 May 2020 12:48:46 -0500 Subject: [PATCH] Issue #4830 - Improved notification of configuration mistakes on level names Signed-off-by: Joakim Erdfelt --- .../logging/JettyLoggerConfiguration.java | 21 ++++++++++++++++--- .../jetty/logging/JettyLoggerFactory.java | 6 +----- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLoggerConfiguration.java b/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLoggerConfiguration.java index 4096ab4f70ec..2f4662aeb344 100644 --- a/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLoggerConfiguration.java +++ b/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLoggerConfiguration.java @@ -26,6 +26,8 @@ import java.util.Locale; import java.util.Properties; import java.util.TimeZone; +import java.util.stream.Collectors; +import java.util.stream.Stream; /** * JettyLogger specific configuration: @@ -115,26 +117,39 @@ public JettyLevel getLevel(String name) JettyLevel level = JettyLoggerFactory.walkParentLoggerNames(startName, key -> { String levelStr = properties.getProperty(key + SUFFIX_LEVEL); - return JettyLevel.strToLevel(levelStr); + return toJettyLevel(key, levelStr); }); if (level == null) { // Try slf4j root logging config. String levelStr = properties.getProperty(JettyLogger.ROOT_LOGGER_NAME + SUFFIX_LEVEL); - level = JettyLevel.strToLevel(levelStr); + level = toJettyLevel(JettyLogger.ROOT_LOGGER_NAME, levelStr); } if (level == null) { // Try legacy root logging config. String levelStr = properties.getProperty("log" + SUFFIX_LEVEL); - level = JettyLevel.strToLevel(levelStr); + level = toJettyLevel("log", levelStr); } return level != null ? level : DEFAULT_LEVEL; } + protected static JettyLevel toJettyLevel(String loggerName, String levelStr) + { + if (levelStr == null) + return null; + JettyLevel level = JettyLevel.strToLevel(levelStr); + if (level == null) + { + System.err.printf("Unknown JettyLogger/Slf4J Level [%s]=[%s], expecting only [%s] as values.", + loggerName, levelStr, Stream.of(JettyLevel.values()).map(JettyLevel::toString).collect(Collectors.joining(", "))); + } + return level; + } + public TimeZone getTimeZone(String key) { String zoneIdStr = properties.getProperty(key); diff --git a/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLoggerFactory.java b/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLoggerFactory.java index fd97bd771b55..389a25dbfd35 100644 --- a/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLoggerFactory.java +++ b/jetty-slf4j-impl/src/main/java/org/eclipse/jetty/logging/JettyLoggerFactory.java @@ -24,8 +24,6 @@ import java.util.concurrent.ConcurrentMap; import java.util.function.Consumer; import java.util.function.Function; -import java.util.stream.Collectors; -import java.util.stream.Stream; import org.slf4j.ILoggerFactory; import org.slf4j.Logger; @@ -164,11 +162,9 @@ public String getLoggerLevel(String loggerName) @Override public boolean setLoggerLevel(String loggerName, String levelName) { - JettyLevel level = JettyLevel.strToLevel(levelName); + JettyLevel level = JettyLoggerConfiguration.toJettyLevel(loggerName, levelName); if (level == null) { - System.err.printf("Unknown JettyLogger/Slf4J Level [%s]=[%s], expecting only [%s] as values.", - loggerName, levelName, Stream.of(JettyLevel.values()).map(JettyLevel::toString).collect(Collectors.joining(", "))); return false; } JettyLogger jettyLogger = getJettyLogger(loggerName);