You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by st...@apache.org on 2015/08/25 15:32:17 UTC

svn commit: r1697671 - /jackrabbit/oak/trunk/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/junit/LogLevelModifier.java

Author: stefanegli
Date: Tue Aug 25 13:32:17 2015
New Revision: 1697671

URL: http://svn.apache.org/r1697671
Log:
OAK-3291 : add newConsoleAppender method - this allows to temporarily add a console for individual tests - this can be used together with LogDumper to have log output written to eg the console in case the test fails

Modified:
    jackrabbit/oak/trunk/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/junit/LogLevelModifier.java

Modified: jackrabbit/oak/trunk/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/junit/LogLevelModifier.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/junit/LogLevelModifier.java?rev=1697671&r1=1697670&r2=1697671&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/junit/LogLevelModifier.java (original)
+++ jackrabbit/oak/trunk/oak-commons/src/test/java/org/apache/jackrabbit/oak/commons/junit/LogLevelModifier.java Tue Aug 25 13:32:17 2015
@@ -35,6 +35,7 @@ import ch.qos.logback.classic.LoggerCont
 import ch.qos.logback.classic.filter.ThresholdFilter;
 import ch.qos.logback.classic.spi.ILoggingEvent;
 import ch.qos.logback.core.Appender;
+import ch.qos.logback.core.ConsoleAppender;
 import ch.qos.logback.core.filter.Filter;
 
 /**
@@ -136,8 +137,19 @@ public class LogLevelModifier extends Te
     }
     
     private final List<AppenderFilter> appenderFilters = new LinkedList<AppenderFilter>();
+    @SuppressWarnings("rawtypes")
+    private final List<Appender> newAppenders = new LinkedList<Appender>();
     private final List<LoggerLevel> loggerLevels = new LinkedList<LoggerLevel>();
     
+    public LogLevelModifier newConsoleAppender(String name) {
+        ConsoleAppender<ILoggingEvent> c = new ConsoleAppender<ILoggingEvent>();
+        c.setName(name);
+        c.setContext(getContext());
+        rootLogger().addAppender(c);
+        newAppenders.add(c);
+        return this;
+    }
+    
     /** 
      * Adds a ThresholdFilter with the given level to an existing appender during the test.
      * <p>
@@ -169,6 +181,7 @@ public class LogLevelModifier extends Te
         }
     }
 
+    @SuppressWarnings({ "unchecked", "rawtypes" })
     @Override
     protected void finished(Description description) {
         for (Iterator<AppenderFilter> it = appenderFilters.iterator(); it.hasNext();) {
@@ -179,6 +192,10 @@ public class LogLevelModifier extends Te
             LoggerLevel loggerLevel = (LoggerLevel) it.next();
             loggerLevel.finished();
         }
+        for (Iterator<Appender> it = newAppenders.iterator(); it.hasNext();) {
+            Appender appender = it.next();
+            rootLogger().detachAppender(appender);
+        }
     }
 
     @Override