diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterFormatter.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterFormatter.java index 79c447a..d827c7c 100644 --- a/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterFormatter.java +++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterFormatter.java @@ -566,20 +566,22 @@ final Map oMap = (Map) o; str.append('{'); boolean isFirst = true; - for (final Object o1 : oMap.entrySet()) { - final Map.Entry current = (Map.Entry) o1; - if (isFirst) { - isFirst = false; - } else { - str.append(", "); + synchronized (oMap) { + for (final Object o1 : oMap.entrySet()) { + final Map.Entry current = (Map.Entry) o1; + if (isFirst) { + isFirst = false; + } else { + str.append(", "); + } + final Object key = current.getKey(); + final Object value = current.getValue(); + recursiveDeepToString(key, str, new HashSet<>(dejaVu)); + str.append('='); + recursiveDeepToString(value, str, new HashSet<>(dejaVu)); } - final Object key = current.getKey(); - final Object value = current.getValue(); - recursiveDeepToString(key, str, new HashSet<>(dejaVu)); - str.append('='); - recursiveDeepToString(value, str, new HashSet<>(dejaVu)); + str.append('}'); } - str.append('}'); } } @@ -596,16 +598,17 @@ final Collection oCol = (Collection) o; str.append('['); boolean isFirst = true; - for (final Object anOCol : oCol) { - if (isFirst) { - isFirst = false; - } else { - str.append(", "); + synchronized (oCol) { + for (final Object anOCol : oCol) { + if (isFirst) { + isFirst = false; + } else { + str.append(", "); + } + recursiveDeepToString(anOCol, str, new HashSet<>(dejaVu)); } - recursiveDeepToString(anOCol, str, new HashSet<>(dejaVu)); - } - str.append(']'); - } + str.append(']'); + }} } private static void tryObjectToString(final Object o, final StringBuilder str) {