From ee29860b1816b45e27ab23dd01b56c15e1820f7d Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 16 Apr 2021 10:44:54 -0500 Subject: [PATCH] Issue #6186 - Add null protection to Log/Logger API Signed-off-by: Joakim Erdfelt --- .../java/org/eclipse/jetty/util/log/Log.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/log/Log.java b/jetty-util/src/main/java/org/eclipse/jetty/util/log/Log.java index 50c1775b0524..386201110bab 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/log/Log.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/log/Log.java @@ -28,6 +28,7 @@ import java.util.Enumeration; import java.util.Locale; import java.util.Map; +import java.util.Objects; import java.util.Properties; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -168,6 +169,7 @@ public static void initialized() if (announce && LOG != null) LOG.info(String.format("Logging initialized @%dms to %s", Uptime.getUptime(), LOG.getClass().getName())); } + Objects.requireNonNull(LOG, "Root Logger may not be null"); } private static void initStandardLogging(Throwable e) @@ -195,7 +197,7 @@ public static Logger getLog() */ public static void setLog(Logger log) { - Log.LOG = log; + Log.LOG = Objects.requireNonNull(log, "Root Logger may not be null"); __logClass = null; } @@ -275,13 +277,22 @@ public static Logger getLogger(String name) { initialized(); + Logger logger = null; + + // Return root if (name == null) - return LOG; + logger = LOG; - Logger logger = __loggers.get(name); + // use cache if (logger == null) + logger = __loggers.get(name); + + // create new logger + if (logger == null && LOG != null) logger = LOG.getLogger(name); + Objects.requireNonNull(logger, "Logger with name [" + name + "]"); + return logger; }