You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ck...@apache.org on 2021/12/23 17:43:54 UTC

[logging-log4j2] branch release-2.x updated: LOG4J2-3264: Fix MapLookup to lookup MapMessage before DefaultMap

This is an automated email from the ASF dual-hosted git repository.

ckozak pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git


The following commit(s) were added to refs/heads/release-2.x by this push:
     new 4d30644  LOG4J2-3264: Fix MapLookup to lookup MapMessage before DefaultMap
4d30644 is described below

commit 4d30644bba4d5354b0d7983a5019a14dcb6ad4a4
Author: Yanming Zhou <zh...@gmail.com>
AuthorDate: Tue Dec 21 09:02:07 2021 +0800

    LOG4J2-3264: Fix MapLookup to lookup MapMessage before DefaultMap
---
 .../java/org/apache/logging/log4j/core/lookup/MapLookup.java  | 11 ++++-------
 .../apache/logging/log4j/core/lookup/InterpolatorTest.java    |  2 +-
 .../org/apache/logging/log4j/core/lookup/MapLookupTest.java   |  6 ++++--
 3 files changed, 9 insertions(+), 10 deletions(-)

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 0b98475..a7f815d 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
@@ -119,17 +119,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;
     }
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/InterpolatorTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/InterpolatorTest.java
index 481803a..af0067b 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/InterpolatorTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/InterpolatorTest.java
@@ -166,6 +166,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/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java
index 2804e97..426c717 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java
+++ b/log4j-core/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