diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
index 560a7787fb..b62a71a04e 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLoggerConfig.java
@@ -72,7 +72,7 @@
 @Plugin(name = "asyncLogger", category = Node.CATEGORY, printObject = true)
 public class AsyncLoggerConfig extends LoggerConfig {
 
-    private static final ThreadLocal<Boolean> ASYNC_LOGGER_ENTERED = new 
ThreadLocal<>();
+    private static final ThreadLocal<Boolean> ASYNC_LOGGER_ENTERED = 
ThreadLocal.withInitial(() -> Boolean.FALSE);
     private final AsyncLoggerConfigDelegate delegate;
 
     protected AsyncLoggerConfig(final String name,
@@ -89,7 +89,7 @@ protected AsyncLoggerConfig(final String name,
     protected void log(final LogEvent event, final LoggerConfigPredicate 
predicate) {
         // See LOG4J2-2301
         if (predicate == LoggerConfigPredicate.ALL &&
-                ASYNC_LOGGER_ENTERED.get() == null &&
+                ASYNC_LOGGER_ENTERED.get() == Boolean.FALSE &&
                 // Optimization: AsyncLoggerConfig is identical to LoggerConfig
                 // when no appenders are present. Avoid splitting for 
synchronous
                 // and asynchronous execution paths until encountering an
@@ -108,7 +108,7 @@ protected void log(final LogEvent event, final 
LoggerConfigPredicate predicate)
                 // from reusable messages.
                 logToAsyncDelegate(event);
             } finally {
-                ASYNC_LOGGER_ENTERED.remove();
+                ASYNC_LOGGER_ENTERED.set(Boolean.FALSE);
             }
         } else {
             super.log(event, predicate);


With regards,
Apache Git Services

Reply via email to