svn commit: r925 - logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo

Author: seb Date: Fri Nov 17 09:51:45 2006 New Revision: 925 Added: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/UserTurboFilter.java Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/TurboFilter.java Log: Added support for OnMatch and OnMismatch options in TurboFilter Added a new TurboFilter: UserTurboFilter Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/TurboFilter.java ============================================================================== --- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/TurboFilter.java (original) +++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/TurboFilter.java Fri Nov 17 09:51:45 2006 @@ -4,7 +4,6 @@ import ch.qos.logback.classic.Level; import ch.qos.logback.classic.Logger; -import ch.qos.logback.core.filter.Filter; import ch.qos.logback.core.spi.ContextAwareBase; import ch.qos.logback.core.spi.FilterReply; import ch.qos.logback.core.spi.LifeCycle; @@ -19,7 +18,10 @@ public abstract class TurboFilter extends ContextAwareBase implements LifeCycle { private String name; - boolean start = false; + boolean start = false; + protected FilterReply onMatch = FilterReply.NEUTRAL; + protected FilterReply onMismatch = FilterReply.NEUTRAL; + /** * Points to the next filter in the filter chain. @@ -28,8 +30,8 @@ /** * Make a decision based on the multiple parameters passed as arguments. - * The returned value should be one of <code>{@link Filter#DENY}</code>, - * <code>{@link Filter#NEUTRAL}</code>, or <code>{@link Filter#ACCEPT}</code>. + * The returned value should be one of <code>{@link FilterReply#DENY}</code>, + * <code>{@link FilterReply#NEUTRAL}</code>, or <code>{@link FilterReply#ACCEPT}</code>. * @param marker * @param logger @@ -76,5 +78,25 @@ public void setName(String name) { this.name = name; } + + final public void setOnMatch(String action) { + if ("NEUTRAL".equals(action)) { + onMatch = FilterReply.NEUTRAL; + } else if ("ACCEPT".equals(action)) { + onMatch = FilterReply.ACCEPT; + } else if ("DENY".equals(action)) { + onMatch = FilterReply.DENY; + } + } + + final public void setOnMismatch(String action) { + if ("NEUTRAL".equals(action)) { + onMismatch = FilterReply.NEUTRAL; + } else if ("ACCEPT".equals(action)) { + onMismatch = FilterReply.ACCEPT; + } else if ("DENY".equals(action)) { + onMismatch = FilterReply.DENY; + } + } } Added: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/UserTurboFilter.java ============================================================================== --- (empty file) +++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/UserTurboFilter.java Fri Nov 17 09:51:45 2006 @@ -0,0 +1,45 @@ +package ch.qos.logback.classic.turbo; + +import org.slf4j.Marker; + +import ch.qos.logback.classic.ClassicGlobal; +import ch.qos.logback.classic.Level; +import ch.qos.logback.classic.Logger; +import ch.qos.logback.classic.MDC; +import ch.qos.logback.core.spi.FilterReply; + +/** + * This class allows output for a given user. + * + * When the given user is identified by this TubroFilter, + * the reply is based on the OnMatch option. + * + * To allow output for a user, set the OnMatch option + * to ACCEPT. To disable output for the given user, set + * the OnMatch option to DENY. + * + * By default, values of the OnMatch and OnMisMatch + * options are NEUTRAL. + * + * @author Ceki Gülcü + * @author Sébastien Pennec + */ +public class UserTurboFilter extends TurboFilter { + + String user; + + @Override + public FilterReply decide(Marker marker, Logger logger, Level level, String format, Object[] params, Throwable t) { + + String user = MDC.get(ClassicGlobal.USER_MDC_KEY); + if (this.user.equals(user)) { + return onMatch; + } + return onMismatch; + } + + public void setUser(String user) { + this.user = user; + } + +}
participants (1)
-
noreply.seb@qos.ch