@Before public void beforeEach() { logger = Logger.getLogger(LoggerTest.class); // Find all of the existing appenders on all of the loggers, and // remove them all (keeping track of which appender they're on) log4jLogger = org.apache.log4j.Logger.getLogger(logger.getName()); org.apache.log4j.Logger theLogger = log4jLogger; while (theLogger != null) { List<Appender> appenders = new ArrayList<Appender>(); Enumeration<?> previousAppenders = theLogger.getAllAppenders(); while (previousAppenders.hasMoreElements()) { appenders.add((Appender)previousAppenders.nextElement()); } existingAppendersByLoggerName.put(theLogger.getName(), appenders); theLogger.removeAllAppenders(); theLogger = (org.apache.log4j.Logger)theLogger.getParent(); } // Set up the appender from which we can easily grab the content of the log during the tests. // This assumes we're using Log4J. Also, the Log4J properties should specify that the // logger for this particular class. log = new LogRecorder(); log4jLogger = org.apache.log4j.Logger.getLogger(logger.getName()); log4jLogger.addAppender(this.log); log4jLogger.setLevel(Level.ALL); }