Repository: logging-log4j2
Updated Branches:
  refs/heads/master d6cfb59c7 -> 763165d2d


LOG4J2-1022 - create the list of keys at initialization


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

Branch: refs/heads/master
Commit: 763165d2d328a05f341bc4cdb83090bd8c7a13a7
Parents: d6cfb59
Author: Ralph Goers <[email protected]>
Authored: Mon May 18 17:07:57 2015 -0700
Committer: Ralph Goers <[email protected]>
Committed: Mon May 18 17:07:57 2015 -0700

----------------------------------------------------------------------
 .../log4j/core/pattern/MdcPatternConverter.java | 33 +++++++++++++++-----
 1 file changed, 25 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/763165d2/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java
index e33b89a..50990a6 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java
@@ -37,6 +37,8 @@ public final class MdcPatternConverter extends 
LogEventPatternConverter {
      * Name of property to output.
      */
     private final String key;
+    private final String[] keys;
+    private final boolean full;
 
     /**
      * Private constructor.
@@ -45,7 +47,20 @@ public final class MdcPatternConverter extends 
LogEventPatternConverter {
      */
     private MdcPatternConverter(final String[] options) {
         super(options != null && options.length > 0 ? "MDC{" + options[0] + 
'}' : "MDC", "mdc");
-        key = options != null && options.length > 0 ? options[0] : null;
+        if (options != null && options.length > 0) {
+            full = false;
+            if (options[0].indexOf(',') > 0) {
+                keys = options[0].split(",");
+                key = null;
+            } else {
+                keys = null;
+                key = options[0];
+            }
+        } else {
+            full = true;
+            key = null;
+            keys = null;
+        }
     }
 
     /**
@@ -66,9 +81,7 @@ public final class MdcPatternConverter extends 
LogEventPatternConverter {
         final Map<String, String> contextMap = event.getContextMap();
         // if there is no additional options, we output every single
         // Key/Value pair for the MDC in a similar format to 
Hashtable.toString()
-        if (key == null) {
-
-
+        if (full) {
             if (contextMap == null || contextMap.isEmpty()) {
                 toAppendTo.append("{}");
                 return;
@@ -84,9 +97,13 @@ public final class MdcPatternConverter extends 
LogEventPatternConverter {
             }
             sb.append('}');
             toAppendTo.append(sb);
-        } else if (contextMap != null) {
-            if (key.indexOf(',') > 0) {
-                String[] keys = key.split(",");
+        } else {
+            if (keys != null) {
+                if (contextMap == null || contextMap.isEmpty()) {
+                    toAppendTo.append("{}");
+                    return;
+                }
+                // Print all the keys in the array that have a value.
                 final StringBuilder sb = new StringBuilder("{");
                 for (String key : keys) {
                     key = key.trim();
@@ -99,7 +116,7 @@ public final class MdcPatternConverter extends 
LogEventPatternConverter {
                 }
                 sb.append('}');
                 toAppendTo.append(sb);
-            } else {
+            } else if (contextMap != null){
                 // otherwise they just want a single key output
                 final Object val = contextMap.get(key);
 

Reply via email to