You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ck...@apache.org on 2020/07/16 20:36:29 UTC
[logging-log4j2] 03/03: LOG4J2-2867: RingBufferLogEventTranslator
uses a static ContextDataInjector
This is an automated email from the ASF dual-hosted git repository.
ckozak pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit cb3ee2b6ef9d888c3b269b3fa8c0d1d9345ecc5c
Author: Carter Kozak <ck...@apache.org>
AuthorDate: Thu Jul 16 16:35:38 2020 -0400
LOG4J2-2867: RingBufferLogEventTranslator uses a static ContextDataInjector
Previously a new instance was created for each translator, which
occurred on every thread.
---
.../apache/logging/log4j/core/async/RingBufferLogEventTranslator.java | 4 ++--
src/changes/changes.xml | 4 ++++
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java
index a6f5caf..417394b 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java
@@ -37,7 +37,7 @@ import com.lmax.disruptor.EventTranslator;
public class RingBufferLogEventTranslator implements
EventTranslator<RingBufferLogEvent> {
- private final ContextDataInjector injector = ContextDataInjectorFactory.createInjector();
+ private static final ContextDataInjector INJECTOR = ContextDataInjectorFactory.createInjector();
private AsyncLogger asyncLogger;
String loggerName;
protected Marker marker;
@@ -60,7 +60,7 @@ public class RingBufferLogEventTranslator implements
event.setValues(asyncLogger, loggerName, marker, fqcn, level, message, thrown,
// config properties are taken care of in the EventHandler thread
// in the AsyncLogger#actualAsyncLog method
- injector.injectContextData(null, (StringMap) event.getContextData()), contextStack,
+ INJECTOR.injectContextData(null, (StringMap) event.getContextData()), contextStack,
threadId, threadName, threadPriority, location, clock, nanoClock);
clear(); // clear the translator
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index c2c41ad..87470ec 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -82,6 +82,10 @@
Disruptor and JUL no longer recursively start the AsyncLoggerDisruptor
resulting in an extra disruptor background thread constantly waiting.
</action>
+ <action issue="LOG4J2-2867" dev="ckozak" type="fix">
+ RingBufferLogEventTranslator uses a static ContextDataInjector instead of initializing a new object
+ on each thread.
+ </action>
</release>
<release version="2.13.3" date="2020-05-10" description="GA Release 2.13.3">
<action issue="LOG4J2-2838" dev="rgoers" type="fix">