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);
