You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2016/08/22 15:04:58 UTC

logging-log4j2 git commit: LOG4J2-1010 DynamicThresholdFilter should get context data from the configured ContextDataInjector, not hard-coded from ThreadContext

Repository: logging-log4j2
Updated Branches:
  refs/heads/LOG4J2-1010&LOG4J2-1447-injectable-contextdata&better-datastructure 0f8a24f16 -> 3e7b394ee


LOG4J2-1010 DynamicThresholdFilter should get context data from the configured ContextDataInjector, not hard-coded from ThreadContext


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

Branch: refs/heads/LOG4J2-1010&LOG4J2-1447-injectable-contextdata&better-datastructure
Commit: 3e7b394ee56eecd328e73db816b0eb98316fb7f6
Parents: 0f8a24f
Author: rpopma <rp...@apache.org>
Authored: Tue Aug 23 00:01:29 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Tue Aug 23 00:01:29 2016 +0900

----------------------------------------------------------------------
 .../core/filter/DynamicThresholdFilter.java     | 29 ++++++++++++++------
 1 file changed, 21 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/3e7b394e/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java
index 8072e7c..3409ba5 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java
@@ -22,7 +22,7 @@ import java.util.Objects;
 
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
-import org.apache.logging.log4j.ThreadContext;
+import org.apache.logging.log4j.core.ContextData;
 import org.apache.logging.log4j.core.Filter;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.Logger;
@@ -31,6 +31,10 @@ import org.apache.logging.log4j.core.config.plugins.Plugin;
 import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
 import org.apache.logging.log4j.core.config.plugins.PluginElement;
 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
+import org.apache.logging.log4j.core.impl.ContextDataFactory;
+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.core.util.KeyValuePair;
 import org.apache.logging.log4j.message.Message;
 
@@ -65,7 +69,7 @@ public final class DynamicThresholdFilter extends AbstractFilter {
     }
     private Level defaultThreshold = Level.ERROR;
     private final String key;
-
+    private final ContextDataInjector injector = ContextDataInjectorFactory.createInjector();
     private Map<String, Level> levelMap = new HashMap<>();
 
     private DynamicThresholdFilter(final String key, final Map<String, Level> pairs, final Level defaultLevel,
@@ -113,8 +117,8 @@ public final class DynamicThresholdFilter extends AbstractFilter {
         return true;
     }
 
-    private Result filter(final Level level, final Map<String, String> contextMap) {
-        final String value = contextMap.get(key);
+    private Result filter(final Level level, final ContextData contextMap) {
+        final String value = contextMap.getValue(key);
         if (value != null) {
             Level ctxLevel = levelMap.get(value);
             if (ctxLevel == null) {
@@ -128,25 +132,34 @@ public final class DynamicThresholdFilter extends AbstractFilter {
 
     @Override
     public Result filter(final LogEvent event) {
-        return filter(event.getLevel(), event.getContextMap());
+        return filter(event.getLevel(), event.getContextData());
     }
 
     @Override
     public Result filter(final Logger logger, final Level level, final Marker marker, final Message msg,
                          final Throwable t) {
-        return filter(level, ThreadContext.getContext());
+        return filter(level, currentContextData());
     }
 
     @Override
     public Result filter(final Logger logger, final Level level, final Marker marker, final Object msg,
                          final Throwable t) {
-        return filter(level, ThreadContext.getContext());
+        return filter(level, currentContextData());
     }
 
     @Override
     public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
                          final Object... params) {
-        return filter(level, ThreadContext.getContext());
+        return filter(level, currentContextData());
+    }
+
+    private ContextData currentContextData() {
+        return injector.injectContextData(null, reusableInstance());
+    }
+
+    private MutableContextData reusableInstance() {
+        // TODO if (Constants.ENABLE_THREADLOCALS) return thread-local instance
+        return ContextDataFactory.createContextData(); // creates temporary object
     }
 
     public String getKey() {