diff options
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/slf4j/BaseMDCCopyingWrapper.java')
-rw-r--r-- | openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/slf4j/BaseMDCCopyingWrapper.java | 52 |
1 files changed, 36 insertions, 16 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/slf4j/BaseMDCCopyingWrapper.java b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/slf4j/BaseMDCCopyingWrapper.java index a963542906..d667ff769c 100644 --- a/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/slf4j/BaseMDCCopyingWrapper.java +++ b/openecomp-be/lib/openecomp-sdc-logging-lib/openecomp-sdc-logging-core/src/main/java/org/openecomp/sdc/logging/slf4j/BaseMDCCopyingWrapper.java @@ -16,38 +16,58 @@ package org.openecomp.sdc.logging.slf4j; -import org.slf4j.MDC; - +import java.util.EnumMap; import java.util.Map; +import org.openecomp.sdc.logging.slf4j.SLF4JLoggingServiceProvider.ContextField; +import org.slf4j.MDC; /** - * @author EVITALIY - * @since 08 Jan 18 + * Because we don't know which information should be carried over from MDC, and which shouldn't, copy just the keys that + * the logging service uses. + * + * @author evitaliy + * @since 08 Jan 2018 */ abstract class BaseMDCCopyingWrapper { - private final Map<String, String> context; + private final Map<ContextField, String> context; BaseMDCCopyingWrapper() { - this.context = MDC.getCopyOfContextMap(); + this.context = fromMdc(); } - final Map<String, String> replace() { - Map<String, String> old = MDC.getCopyOfContextMap(); - replaceMDC(this.context); + final Map<ContextField, String> replace() { + Map<ContextField, String> old = fromMdc(); + toMdc(this.context); return old; } - final void revert(Map<String, String> old) { - replaceMDC(old); + final void revert(Map<ContextField, String> old) { + toMdc(old); + } + + private Map<ContextField, String> fromMdc() { + + Map<ContextField, String> copy = new EnumMap<>(ContextField.class); + for (ContextField k : ContextField.values()) { + String v = MDC.get(k.asKey()); + if (v != null) { + copy.put(k, v); + } + } + + return copy; } - private static void replaceMDC(Map<String, String> context) { + private static void toMdc(Map<ContextField, String> context) { - if (context == null) { - MDC.clear(); - } else { - MDC.setContextMap(context); + for (ContextField k : ContextField.values()) { + String v = context.get(k); + if (v != null) { + MDC.put(k.asKey(), v); + } else { + MDC.remove(k.asKey()); + } } } } |