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