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


Reply via email to