This is an automated email from the ASF dual-hosted git repository. ckozak pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 7df9c1b9e24759dca329197b9175cb673feb4c47 Author: Yanming Zhou <[email protected]> AuthorDate: Tue Dec 21 09:02:07 2021 +0800 LOG4J2-3264: Fix MapLookup to lookup MapMessage before DefaultMap --- .../apache/logging/log4j/core/lookup/InterpolatorTest.java | 2 +- .../org/apache/logging/log4j/core/lookup/MapLookupTest.java | 6 ++++-- .../java/org/apache/logging/log4j/core/lookup/MapLookup.java | 11 ++++------- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/lookup/InterpolatorTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/lookup/InterpolatorTest.java index d366d7a..64ae473 100644 --- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/lookup/InterpolatorTest.java +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/lookup/InterpolatorTest.java @@ -155,6 +155,6 @@ public class InterpolatorTest { .setLevel(Level.INFO) .setMessage(new StringMapMessage(map)) .build(); - assertEquals("configProperties", interpolator.lookup(event, "map:key")); + assertEquals("mapMessage", interpolator.lookup(event, "map:key")); } } diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java index 2804e97..426c717 100644 --- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java +++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java @@ -97,9 +97,10 @@ public class MapLookupTest { } @Test - public void testLookupDefaultMapIsCheckedBeforeMapMessage() { + public void testLookupMapMessageIsCheckedBeforeDefaultMap() { final HashMap<String, String> map = new HashMap<>(); map.put("A", "ADefault"); + map.put("B", "BDefault"); final HashMap<String, Object> eventMap = new HashMap<>(); eventMap.put("A", "AEvent"); final MapMessage message = new MapMessage<>(eventMap); @@ -107,7 +108,8 @@ public class MapLookupTest { .setMessage(message) .build(); final MapLookup lookup = new MapLookup(map); - assertEquals("ADefault", lookup.lookup(event, "A")); + assertEquals("AEvent", lookup.lookup(event, "A")); + assertEquals("BDefault", lookup.lookup(event, "B")); } @Test diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java index dba88c7..b190e5c 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java @@ -88,17 +88,14 @@ public class MapLookup implements StrLookup { @Override public String lookup(final LogEvent event, final String key) { final boolean isMapMessage = event != null && event.getMessage() instanceof MapMessage; - if (map == null && !isMapMessage) { - return null; - } - if (map != null && map.containsKey(key)) { - final String obj = map.get(key); + if (isMapMessage) { + final String obj = ((MapMessage) event.getMessage()).get(key); if (obj != null) { return obj; } } - if (isMapMessage) { - return ((MapMessage) event.getMessage()).get(key); + if (map != null) { + return map.get(key); } return null; }
