You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by pk...@apache.org on 2022/04/24 18:00:30 UTC

[logging-log4j2] 09/11: [LOG4J2-3475] Add missing message parameterization in RegexFilter

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

pkarwasz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit 2db7968d56b75ec6bdba2176a8d63ffb683ef3d7
Author: Jeremy Lin <je...@gmail.com>
AuthorDate: Tue Apr 12 22:18:57 2022 -0700

    [LOG4J2-3475] Add missing message parameterization in RegexFilter
    
    Conflicts:
            log4j-core/src/test/java/org/apache/logging/log4j/core/filter/RegexFilterTest.java
---
 .../logging/log4j/core/filter/RegexFilterTest.java   | 20 ++++++++++++++++++++
 .../logging/log4j/core/filter/RegexFilter.java       |  6 +++++-
 2 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/filter/RegexFilterTest.java b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/filter/RegexFilterTest.java
index 19dbed9c84..9b68263237 100644
--- a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/filter/RegexFilterTest.java
+++ b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/filter/RegexFilterTest.java
@@ -81,4 +81,24 @@ public class RegexFilterTest {
         assertSame(Filter.Result.DENY, filter.filter(null, Level.DEBUG, null, (Message) null, (Throwable) null));
         assertSame(Filter.Result.DENY, filter.filter(null, Level.DEBUG, null, null, (Object[]) null));
     }
+
+    @Test
+    public void testParameterizedMsg() throws Exception {
+        final String msg = "params {} {}";
+        final Object[] params = { "foo", "bar" };
+
+        // match against raw message
+        final RegexFilter rawFilter = RegexFilter.createFilter("params \\{\\} \\{\\}", null,
+                                                               true, // useRawMsg
+                                                               Result.ACCEPT, Result.DENY);
+        final Result rawResult = rawFilter.filter(null, null, null, msg, params);
+        assertThat(rawResult, equalTo(Result.ACCEPT));
+
+        // match against formatted message
+        final RegexFilter fmtFilter = RegexFilter.createFilter("params foo bar", null,
+                                                               false, // useRawMsg
+                                                               Result.ACCEPT, Result.DENY);
+        final Result fmtResult = fmtFilter.filter(null, null, null, msg, params);
+        assertThat(fmtResult, equalTo(Result.ACCEPT));
+    }
 }
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/RegexFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/RegexFilter.java
index 35ee5c79dc..9a3608923d 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/RegexFilter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/RegexFilter.java
@@ -33,6 +33,7 @@ import org.apache.logging.log4j.plugins.PluginAttribute;
 import org.apache.logging.log4j.plugins.PluginElement;
 import org.apache.logging.log4j.plugins.PluginFactory;
 import org.apache.logging.log4j.message.Message;
+import org.apache.logging.log4j.message.ParameterizedMessage;
 
 /**
  * This filter returns the onMatch result if the message matches the regular expression.
@@ -57,7 +58,10 @@ public final class RegexFilter extends AbstractFilter {
     @Override
     public Result filter(final Logger logger, final Level level, final Marker marker, final String msg,
             final Object... params) {
-        return filter(msg);
+        if (useRawMessage || params == null || params.length == 0) {
+            return filter(msg);
+        }
+        return filter(ParameterizedMessage.format(msg, params));
     }
 
     @Override