You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by "srikanth surukuntu (JIRA)" <ji...@apache.org> on 2016/08/11 20:44:20 UTC

[jira] [Created] (LOG4J2-1511) DynamicThresholdFilter filters incorrectly when params are passed as individual arguments instead of varargs

srikanth surukuntu created LOG4J2-1511:
------------------------------------------

             Summary: DynamicThresholdFilter filters incorrectly when params are passed as individual arguments instead of varargs
                 Key: LOG4J2-1511
                 URL: https://issues.apache.org/jira/browse/LOG4J2-1511
             Project: Log4j 2
          Issue Type: Bug
    Affects Versions: 2.6.2
            Reporter: srikanth surukuntu


The below test should summarize the issue.

{code}
package org.apache.logging.log4j.core.filter;

import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;

import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.ThreadContext;
import org.apache.logging.log4j.core.Filter;
import org.apache.logging.log4j.core.LoggerContext;
import org.apache.logging.log4j.core.util.KeyValuePair;
import org.apache.logging.log4j.status.StatusLogger;
import org.junit.After;
import org.junit.Test;

/**
 *
 */
public class DynamicThresholdFilterTest {

    @After
    public void cleanup() {
        final LoggerContext ctx = LoggerContext.getContext(false);
        ctx.reconfigure();
        StatusLogger.getLogger().reset();
    }

    @Test
    public void testFilter() {
        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)); // Works
        assertSame(Filter.Result.ACCEPT, filter.filter(null, Level.DEBUG, null, "some test message", "one", "two", "three")); // Doesn't work but it should
        ThreadContext.clearMap();
    }
}
{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org