
Author: seb Date: Mon Jan 8 11:06:45 2007 New Revision: 1168 Added: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/LevelFilter.java logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/ThresholdFilter.java Log: Added ThresholdFilter class and modified LevelFilter class. The latter now acts as a configurable filter to allow or deny a specific given level. ThresholdFilter allows any logging events whose level is higher or equals to its configured level. Added: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/LevelFilter.java ============================================================================== --- (empty file) +++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/LevelFilter.java Mon Jan 8 11:06:45 2007 @@ -0,0 +1,45 @@ +package ch.qos.logback.classic.filter; + +import ch.qos.logback.classic.Level; +import ch.qos.logback.classic.spi.LoggingEvent; +import ch.qos.logback.core.filter.AbstractMatcherFilter; +import ch.qos.logback.core.spi.FilterReply; + +/** + * A class that filters events depending on their level. + * + * One can specify a level and the behaviour of the filter when + * said level is encountered in a logging event. + * + * @author Ceki Gülcü + * @author Sébastien Pennec + */ +public class LevelFilter extends AbstractMatcherFilter { + + Level level; + + @Override + public FilterReply decide(Object eventObject) { + if (!isStarted()) { + return FilterReply.NEUTRAL; + } + + LoggingEvent event = (LoggingEvent)eventObject; + + if (event.getLevel().equals(level)) { + return onMatch; + } else { + return onMismatch; + } + } + + public void setLevel(String level) { + this.level = Level.toLevel(level); + } + + public void start() { + if (this.level != null) { + super.start(); + } + } +} Added: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/ThresholdFilter.java ============================================================================== --- (empty file) +++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/filter/ThresholdFilter.java Mon Jan 8 11:06:45 2007 @@ -0,0 +1,45 @@ +package ch.qos.logback.classic.filter; + +import ch.qos.logback.classic.Level; +import ch.qos.logback.classic.spi.LoggingEvent; +import ch.qos.logback.core.filter.Filter; +import ch.qos.logback.core.spi.FilterReply; + +/** + * A class that filters events depending on their level. + * + * All events with a level equal or above the specified + * level will be accepted, while all events with a level + * under the specified level will be denied. + * + * @author Sébastien Pennec + */ +public class ThresholdFilter extends Filter { + + Level level; + + @Override + public FilterReply decide(Object eventObject) { + if (!isStarted()) { + return FilterReply.NEUTRAL; + } + + LoggingEvent event = (LoggingEvent)eventObject; + + if (event.getLevel().isGreaterOrEqual(level)) { + return FilterReply.ACCEPT; + } else { + return FilterReply.DENY; + } + } + + public void setLevel(String level) { + this.level = Level.toLevel(level); + } + + public void start() { + if (this.level != null) { + super.start(); + } + } +}