You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by GitBox <gi...@apache.org> on 2019/01/14 23:02:11 UTC
[logging-log4j2] Diff for: [GitHub] cakofony merged pull request #251:
Remove garbage creation introduced by LOG4J2-2301
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