[LOG4J2-1511] DynamicThresholdFilter filters incorrectly when params are passed as individual arguments instead of varargs.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/0c9c9f38 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/0c9c9f38 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/0c9c9f38 Branch: refs/heads/LOG4J2-1010&LOG4J2-1447-injectable-contextdata&better-datastructure Commit: 0c9c9f384475af3402833e9a2a27e97248b84b38 Parents: 13feb49 Author: Gary Gregory <ggreg...@apache.org> Authored: Fri Aug 26 22:14:47 2016 -0700 Committer: Gary Gregory <ggreg...@apache.org> Committed: Fri Aug 26 22:14:47 2016 -0700 ---------------------------------------------------------------------- .../core/filter/DynamicThresholdFilter.java | 79 ++++++++++++++++++++ .../core/filter/DynamicThresholdFilterTest.java | 17 +++++ src/changes/changes.xml | 3 + 3 files changed, 99 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/0c9c9f38/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java index 2a2d54c..24cfada 100644 --- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java +++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java @@ -149,6 +149,85 @@ public final class DynamicThresholdFilter extends AbstractFilter { return filter(level, ThreadContext.getContext()); } + @Override + public Result filter(final Logger logger, final Level level, final Marker marker, final String msg, + final Object p0) { + return filter(level, ThreadContext.getContext()); + + } + + @Override + public Result filter(final Logger logger, final Level level, final Marker marker, final String msg, + final Object p0, final Object p1) { + return filter(level, ThreadContext.getContext()); + + } + + @Override + public Result filter(final Logger logger, final Level level, final Marker marker, final String msg, + final Object p0, final Object p1, final Object p2) { + return filter(level, ThreadContext.getContext()); + + } + + @Override + public Result filter(final Logger logger, final Level level, final Marker marker, final String msg, + final Object p0, final Object p1, final Object p2, final Object p3) { + return filter(level, ThreadContext.getContext()); + + } + + @Override + public Result filter(final Logger logger, final Level level, final Marker marker, final String msg, + final Object p0, final Object p1, final Object p2, final Object p3, + final Object p4) { + return filter(level, ThreadContext.getContext()); + + } + + @Override + public Result filter(final Logger logger, final Level level, final Marker marker, final String msg, + final Object p0, final Object p1, final Object p2, final Object p3, + final Object p4, final Object p5) { + return filter(level, ThreadContext.getContext()); + + } + + @Override + public Result filter(final Logger logger, final Level level, final Marker marker, final String msg, + final Object p0, final Object p1, final Object p2, final Object p3, + final Object p4, final Object p5, final Object p6) { + return filter(level, ThreadContext.getContext()); + + } + + @Override + public Result filter(final Logger logger, final Level level, final Marker marker, final String msg, + final Object p0, final Object p1, final Object p2, final Object p3, + final Object p4, final Object p5, final Object p6, + final Object p7) { + return filter(level, ThreadContext.getContext()); + + } + + @Override + public Result filter(final Logger logger, final Level level, final Marker marker, final String msg, + final Object p0, final Object p1, final Object p2, final Object p3, + final Object p4, final Object p5, final Object p6, + final Object p7, final Object p8) { + return filter(level, ThreadContext.getContext()); + + } + + @Override + public Result filter(final Logger logger, final Level level, final Marker marker, final String msg, + final Object p0, final Object p1, final Object p2, final Object p3, + final Object p4, final Object p5, final Object p6, + final Object p7, final Object p8, final Object p9) { + return filter(level, ThreadContext.getContext()); + + } + public String getKey() { return this.key; } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/0c9c9f38/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilterTest.java ---------------------------------------------------------------------- diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilterTest.java index 21f1ca0..1cf6b60 100644 --- a/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilterTest.java +++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilterTest.java @@ -74,9 +74,26 @@ public class DynamicThresholdFilterTest { assertSame(Filter.Result.DENY, filter.filter(event)); event = Log4jLogEvent.newBuilder().setLevel(Level.ERROR).setMessage(new SimpleMessage("Test")).build(); assertSame(Filter.Result.NEUTRAL, filter.filter(event)); + ThreadContext.clearMap(); } @Test + public void testFilterWorksWhenParamsArePassedAsArguments() { + ThreadContext.put("userid", "testuser"); + ThreadContext.put("organization", "apache"); + final KeyValuePair[] pairs = new KeyValuePair[] { + new KeyValuePair("testuser", "DEBUG"), + new KeyValuePair("JohnDoe", "warn") }; + final DynamicThresholdFilter filter = DynamicThresholdFilter.createFilter("userid", pairs, Level.ERROR, Filter.Result.ACCEPT, Filter.Result.NEUTRAL); + filter.start(); + assertTrue(filter.isStarted()); + Object [] replacements = {"one", "two", "three"}; + assertSame(Filter.Result.ACCEPT, filter.filter(null, Level.DEBUG, null, "some test message", replacements)); + assertSame(Filter.Result.ACCEPT, filter.filter(null, Level.DEBUG, null, "some test message", "one", "two", "three")); + ThreadContext.clearMap(); + } + + @Test public void testConfig() { try (final LoggerContext ctx = Configurator.initialize("Test1", "target/test-classes/log4j2-dynamicfilter.xml")) { http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/0c9c9f38/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 2a1f57a..818f570 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -24,6 +24,9 @@ </properties> <body> <release version="2.7" date="2016-MM-DD" description="GA Release 2.7"> + <action issue="LOG4J2-1511" dev="ggregory" type="fix" due-to="Srikanth Surukuntu"> + DynamicThresholdFilter filters incorrectly when params are passed as individual arguments instead of varargs. + </action> <action issue="LOG4J2-1548" dev="ggregory" type="fix"> [CronTriggeringPolicy] ConfigurationScheduler schedules the task infinitely after first fire. </action>