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