LOG4J2-1447 inject ContextData every time a RingBufferLogEvent is initialized


Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/3e95a6e5
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/3e95a6e5
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/3e95a6e5

Branch: 
refs/heads/LOG4J2-1010&LOG4J2-1447-injectable-contextdata&better-datastructure
Commit: 3e95a6e5178b92bed60cb8f590d178aadb15644e
Parents: 2a18e9b
Author: rpopma <[email protected]>
Authored: Wed Jul 27 01:19:10 2016 +0900
Committer: rpopma <[email protected]>
Committed: Wed Jul 27 01:19:10 2016 +0900

----------------------------------------------------------------------
 .../core/async/RingBufferLogEventTranslator.java   | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3e95a6e5/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java
----------------------------------------------------------------------
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 51bd795..50fd344 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
@@ -16,11 +16,12 @@
  */
 package org.apache.logging.log4j.core.async;
 
-import java.util.Map;
-
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.ThreadContext.ContextStack;
+import org.apache.logging.log4j.core.impl.ContextDataInjector;
+import org.apache.logging.log4j.core.impl.ContextDataInjectorFactory;
+import org.apache.logging.log4j.core.impl.MutableContextData;
 import org.apache.logging.log4j.message.Message;
 
 import com.lmax.disruptor.EventTranslator;
@@ -34,6 +35,7 @@ import com.lmax.disruptor.EventTranslator;
 public class RingBufferLogEventTranslator implements
         EventTranslator<RingBufferLogEvent> {
 
+    private final ContextDataInjector injector = 
ContextDataInjectorFactory.getInjector();
     private AsyncLogger asyncLogger;
     private String loggerName;
     protected Marker marker;
@@ -41,7 +43,6 @@ public class RingBufferLogEventTranslator implements
     protected Level level;
     protected Message message;
     protected Throwable thrown;
-    private Map<String, String> contextMap;
     private ContextStack contextStack;
     private long threadId = Thread.currentThread().getId();
     private String threadName = Thread.currentThread().getName();
@@ -53,8 +54,12 @@ public class RingBufferLogEventTranslator implements
     // @Override
     @Override
     public void translateTo(final RingBufferLogEvent event, final long 
sequence) {
-        event.setValues(asyncLogger, loggerName, marker, fqcn, level, message, 
thrown, contextMap, contextStack,
+        event.setValues(asyncLogger, loggerName, marker, fqcn, level, message, 
thrown, contextStack,
                 threadId, threadName, threadPriority, location, 
currentTimeMillis, nanoTime);
+
+        // config properties are taken care of in the EventHandler thread
+        // in the AsyncLogger#actualAsyncLog method
+        injector.injectContextData(null, (MutableContextData) 
event.getContextData());
         clear();
     }
 
@@ -69,7 +74,6 @@ public class RingBufferLogEventTranslator implements
                 null, // level
                 null, // data
                 null, // t
-                null, // map
                 null, // contextStack
                 null, // location
                 0, // currentTimeMillis
@@ -79,7 +83,7 @@ public class RingBufferLogEventTranslator implements
 
     public void setBasicValues(final AsyncLogger anAsyncLogger, final String 
aLoggerName, final Marker aMarker,
             final String theFqcn, final Level aLevel, final Message msg, final 
Throwable aThrowable,
-            final Map<String, String> aMap, final ContextStack aContextStack, 
final StackTraceElement aLocation,
+            final ContextStack aContextStack, final StackTraceElement 
aLocation,
             final long aCurrentTimeMillis, final long aNanoTime) {
         this.asyncLogger = anAsyncLogger;
         this.loggerName = aLoggerName;
@@ -88,7 +92,6 @@ public class RingBufferLogEventTranslator implements
         this.level = aLevel;
         this.message = msg;
         this.thrown = aThrowable;
-        this.contextMap = aMap;
         this.contextStack = aContextStack;
         this.location = aLocation;
         this.currentTimeMillis = aCurrentTimeMillis;

Reply via email to