svn commit: r846 - in logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic: . joran/action turbo

Author: seb Date: Wed Nov 1 17:21:38 2006 New Revision: 846 Added: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/DebugUsersTurboFilter.java Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/ClassicGlobal.java logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ConfigurationAction.java logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/TurboFilter.java Log: ConfigurationAction now pushes and pops the context to and from the objectStack, so that it is usable by following actions. Added an implementation of TurboFilter that allows debug level for selected users only. Work in progress: the <user> element still makes Joran caugh a bit. Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/ClassicGlobal.java ============================================================================== --- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/ClassicGlobal.java (original) +++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/ClassicGlobal.java Wed Nov 1 17:21:38 2006 @@ -13,4 +13,5 @@ static public final char LOGGER_SEPARATOR = '.'; static public final String CAUSED_BY = "Caused by: "; static public final char DOT = '.'; + static public final String USER_MDC_KEY = "user"; } Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ConfigurationAction.java ============================================================================== --- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ConfigurationAction.java (original) +++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/joran/action/ConfigurationAction.java Wed Nov 1 17:21:38 2006 @@ -34,6 +34,9 @@ attachment = true; } + + // the context is turbo filter attachable, so it is pushed on top of the stack + ec.pushObject(getContext()); } public void end(InterpretationContext ec, String name) { @@ -42,5 +45,6 @@ //LoggerContext loggerContext = (LoggerContext) context; //ConfiguratorBase.detachTemporaryConsoleAppender(repository, errorList); } + ec.popObject(); } } Added: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/DebugUsersTurboFilter.java ============================================================================== --- (empty file) +++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/turbo/DebugUsersTurboFilter.java Wed Nov 1 17:21:38 2006 @@ -0,0 +1,46 @@ +package ch.qos.logback.classic.turbo; + +import java.util.ArrayList; +import java.util.List; + +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.filter.Filter; + +/** + * This class allows output of debug level events to a certain list of users. + * + * If the level passed as a parameter is of level DEBUG, then the "user" value + * taken from the MDC is checked against the configured user list. When the user + * belongs to the list, the request is accepted. Otherwise a NEUTRAL response + * is sent, thus not influencing the filter chain. + * + * @author Ceki Gülcü + * @author Sébastien Pennec + */ +public class DebugUsersTurboFilter extends TurboFilter { + + List<String> userList = new ArrayList<String>(); + + @Override + public int decide(Marker marker, Logger logger, Level level, String format, Object[] params, Throwable t) { + if (!level.equals(Level.DEBUG)) { + return Filter.NEUTRAL; + } + String user = MDC.get(ClassicGlobal.USER_MDC_KEY); + if (user != null && userList.contains(user)) { + return Filter.ACCEPT; + } + return Filter.NEUTRAL; + } + + public void addUser(String user) { + System.out.println("******* ADD USER CALLED"); + userList.add(user); + } + +} 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 Wed Nov 1 17:21:38 2006 @@ -23,7 +23,7 @@ /** * Points to the next filter in the filter chain. */ - private TurboFilter classicNext; + private TurboFilter turboNext; /** * Make a decision based on the multiple parameters passed as arguments. @@ -58,14 +58,14 @@ * Set the next filter pointer. */ public void setNext(TurboFilter next) { - this.classicNext = next; + this.turboNext = next; } /** * Return the pointer to the next filter; */ public TurboFilter getNext() { - return classicNext; + return turboNext; } public String getName() {
participants (1)
-
noreply.seb@qos.ch