Mikael Ståldal skrev:
then set the logger levels for both hierarchies to DEBUG, and write yourself a simple custom Filter implementation that accepts/denies events based on your logic, and attach a separate configured instance of that filter to each of the appenders (accepting/denying as the case may be above).

I have done that, and it seems to work. I'm not sure how it would affect the performance though.

Here is the filter code I use. I hereby donate this code to the log4j project. I suggest that it's included in the org.apache.log4j.varia package.


import org.apache.log4j.Level;
import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.spi.Filter;

/**
 * Filter to ACCEPT log messages based on Level <strong>and</strong> Logger 
name prefix.
 *
 * Parameters:
 * <ul>
 * <li>threshold - the Level threshold</li>
 * <li>prefix - the Logger name prefix, use the empty string to match all 
Loggers
 * (including the root Logger).</li>
 * <ul>
 *
 * This filter is NEUTRAL if the Logger name prefix doesn't match, and will 
ACCEPT or
 * DENY based on Level threshold. You can chain several instances of this 
filter.
 *
 * @author Mikael Ståldal
 */
public class LevelAndPrefixFilter extends Filter {

    Level threshold;
    String prefix;

    @Override
    public int decide(LoggingEvent event) {
        if (!event.getLoggerName().startsWith(prefix)) {
            return NEUTRAL;
        }

        if (event.getLevel().isGreaterOrEqual(threshold)) {
            return ACCEPT;
        } else {
            return DENY;
        }
    }

    public Level getThreshold() {
        return threshold;
    }

    public void setThreshold(Level threshold) {
        this.threshold = threshold;
    }

    public String getPrefix() {
        return prefix;
    }

    public void setPrefix(String prefix) {
        this.prefix = prefix;
    }

}

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to