@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); }
String expectedMessageExpression, Class<? extends Throwable> expectedExceptionClass ) { if (!hasEvents()) { fail("Expected log message but found none: " + expectedLevel + " - " + expectedMessageExpression); LoggingEvent event = removeFirst();
@Test public void shouldAcceptMessageAndNullThrowable() { Throwable t = null; logger.error(t, errorMessageWithNullException); logger.warn(t, warningMessageWithNullException); logger.info(t, infoMessageWithNullException); logger.debug(t, "This is a debug message with a null exception"); logger.trace(t, "This is a trace message with a null exception"); log.removeFirst(Logger.Level.ERROR, "This is an error message with a null exception"); log.removeFirst(Logger.Level.WARNING, "This is a warning message with a null exception"); log.removeFirst(Logger.Level.INFO, "This is an info message with a null exception"); log.removeFirst(Logger.Level.DEBUG, "This is a debug message with a null exception"); log.removeFirst(Logger.Level.TRACE, "This is a trace message with a null exception"); assertEquals(false, log.hasEvents()); }
@Test public void shouldLogAppropriateMessagesIfLog4jSetToTraceLevel() { log4jLogger.setLevel(Level.TRACE); logger.error(errorMessageWithNoParameters); logger.warn(warningMessageWithNoParameters); logger.info(infoMessageWithNoParameters); logger.debug("This is a debug message with no parameters"); logger.trace("This is a trace message with no parameters"); log.removeFirst(Logger.Level.ERROR, "This is an error message with no parameters"); log.removeFirst(Logger.Level.WARNING, "This is a warning message with no parameters"); log.removeFirst(Logger.Level.INFO, "This is an info message with no parameters"); log.removeFirst(Logger.Level.DEBUG, "This is a debug message with no parameters"); log.removeFirst(Logger.Level.TRACE, "This is a trace message with no parameters"); assertEquals(false, log.hasEvents()); }
@Test public void shouldLogAppropriateMessagesIfSetToAllLevel() { log4jLogger.setLevel(Level.ALL); logger.error(errorMessageWithNoParameters); logger.warn(warningMessageWithNoParameters); logger.info(infoMessageWithNoParameters); logger.debug("This is a debug message with no parameters"); logger.trace("This is a trace message with no parameters"); log.removeFirst(Logger.Level.ERROR, "This is an error message with no parameters"); log.removeFirst(Logger.Level.WARNING, "This is a warning message with no parameters"); log.removeFirst(Logger.Level.INFO, "This is an info message with no parameters"); log.removeFirst(Logger.Level.DEBUG, "This is a debug message with no parameters"); log.removeFirst(Logger.Level.TRACE, "This is a trace message with no parameters"); assertEquals(false, log.hasEvents()); }
@Test public void shouldAcceptMessageAndThrowable() { Throwable t = new RuntimeException("This is the runtime exception message"); logger.error(t, errorMessageWithException); logger.warn(t, warningMessageWithException); logger.info(t, infoMessageWithException); logger.debug(t, "This is a debug message with an exception"); logger.trace(t, "This is a trace message with an exception"); log.removeFirst(Logger.Level.ERROR, "This is an error message with an exception", RuntimeException.class); log.removeFirst(Logger.Level.WARNING, "This is a warning message with an exception", RuntimeException.class); log.removeFirst(Logger.Level.INFO, "This is an info message with an exception", RuntimeException.class); log.removeFirst(Logger.Level.DEBUG, "This is a debug message with an exception", RuntimeException.class); log.removeFirst(Logger.Level.TRACE, "This is a trace message with an exception", RuntimeException.class); assertEquals(false, log.hasEvents()); }
@Test public void shouldAcceptNullMessageAndThrowable() { Throwable t = new RuntimeException("This is the runtime exception message in LoggerTest"); logger.error(t, null); logger.warn(t, null); logger.info(t, null); logger.debug(t, null); logger.trace(t, null); log.removeFirst(Logger.Level.ERROR, null, RuntimeException.class); log.removeFirst(Logger.Level.WARNING, null, RuntimeException.class); log.removeFirst(Logger.Level.INFO, null, RuntimeException.class); log.removeFirst(Logger.Level.DEBUG, null, RuntimeException.class); log.removeFirst(Logger.Level.TRACE, null, RuntimeException.class); assertEquals(false, log.hasEvents()); }
@Test public void shouldNotAcceptMessageWithNonNullAndNullParameters() { logger.error(errorMessageWithTwoParameters, "first", null); logger.warn(warningMessageWithTwoParameters, "first", null); logger.info(infoMessageWithTwoParameters, "first", null); logger.debug("This is a debug message with a {0} parameter and the {1} parameter", "first", null); logger.trace("This is a trace message with a {0} parameter and the {1} parameter", "first", null); log.removeFirst(Logger.Level.ERROR, "This is an error message with a first parameter and the null parameter"); log.removeFirst(Logger.Level.WARNING, "This is a warning message with a first parameter and the null parameter"); log.removeFirst(Logger.Level.INFO, "This is an info message with a first parameter and the null parameter"); log.removeFirst(Logger.Level.DEBUG, "This is a debug message with a first parameter and the null parameter"); log.removeFirst(Logger.Level.TRACE, "This is a trace message with a first parameter and the null parameter"); assertEquals(false, log.hasEvents()); }
@Test public void shouldAcceptMessageWithNoParameters() { logger.error(errorMessageWithNoParameters); logger.warn(warningMessageWithNoParameters); logger.info(infoMessageWithNoParameters); logger.debug("This is a debug message with no parameters"); logger.trace("This is a trace message with no parameters"); log.removeFirst(Logger.Level.ERROR, "This is an error message with no parameters"); log.removeFirst(Logger.Level.WARNING, "This is a warning message with no parameters"); log.removeFirst(Logger.Level.INFO, "This is an info message with no parameters"); log.removeFirst(Logger.Level.DEBUG, "This is a debug message with no parameters"); log.removeFirst(Logger.Level.TRACE, "This is a trace message with no parameters"); assertEquals(false, log.hasEvents()); }
@Test public void shouldAcceptMessageWithObjectAndPrimitiveParameters() { logger.error(errorMessageWithTwoParameters, "first", 2); logger.warn(warningMessageWithTwoParameters, "first", 2); logger.info(infoMessageWithTwoParameters, "first", 2); logger.debug("This is a debug message with a {0} parameter and the {1} parameter", "first", 2); logger.trace("This is a trace message with a {0} parameter and the {1} parameter", "first", 2); log.removeFirst(Logger.Level.ERROR, "This is an error message with a first parameter and the 2 parameter"); log.removeFirst(Logger.Level.WARNING, "This is a warning message with a first parameter and the 2 parameter"); log.removeFirst(Logger.Level.INFO, "This is an info message with a first parameter and the 2 parameter"); log.removeFirst(Logger.Level.DEBUG, "This is a debug message with a first parameter and the 2 parameter"); log.removeFirst(Logger.Level.TRACE, "This is a trace message with a first parameter and the 2 parameter"); assertEquals(false, log.hasEvents()); }
@Test public void shouldLogAppropriateMessagesIfLog4jSetToDebugLevel() { log4jLogger.setLevel(Level.DEBUG); logger.error(errorMessageWithNoParameters); logger.warn(warningMessageWithNoParameters); logger.info(infoMessageWithNoParameters); logger.debug("This is a debug message with no parameters"); logger.trace("This is a trace message with no parameters"); log.removeFirst(Logger.Level.ERROR, "This is an error message with no parameters"); log.removeFirst(Logger.Level.WARNING, "This is a warning message with no parameters"); log.removeFirst(Logger.Level.INFO, "This is an info message with no parameters"); log.removeFirst(Logger.Level.DEBUG, "This is a debug message with no parameters"); assertEquals(false, log.hasEvents()); }
@Test public void shouldAcceptNullThrowableInError() { logger.error((Throwable)null, someMessage); logger.warn((Throwable)null, someMessage); logger.info((Throwable)null, someMessage); logger.debug((Throwable)null, "some message"); logger.trace((Throwable)null, "some message"); log.removeFirst(Logger.Level.ERROR, "some message"); log.removeFirst(Logger.Level.WARNING, "some message"); log.removeFirst(Logger.Level.INFO, "some message"); log.removeFirst(Logger.Level.DEBUG, "some message"); log.removeFirst(Logger.Level.TRACE, "some message"); }
public void shouldQuietlyAcceptNullMessage() { logger.error(null); logger.warn(null); logger.info(null); logger.debug(null); logger.trace(null); assertEquals(false, log.hasEvents()); }
@Test public void shouldLogNoMessagesIfLog4jSetToOffLevel() { log4jLogger.setLevel(Level.OFF); logger.error(errorMessageWithNoParameters); logger.warn(warningMessageWithNoParameters); logger.info(infoMessageWithNoParameters); logger.debug("This is a debug message with no parameters"); logger.trace("This is a trace message with no parameters"); assertEquals(false, log.hasEvents()); }
public LoggingEvent removeFirst() { if (hasEvents()) { ++lineNumber; return this.events.removeFirst(); } return null; }
public void removeFirst( Logger.Level expectedLevel, String expectedMessageExpression ) { removeFirst(expectedLevel, expectedMessageExpression, null); } }
@Test public void shouldLogAppropriateMessagesIfLog4jSetToWarningLevel() { log4jLogger.setLevel(Level.WARN); logger.error(errorMessageWithNoParameters); logger.warn(warningMessageWithNoParameters); logger.info(infoMessageWithNoParameters); logger.debug("This is a debug message with no parameters"); logger.trace("This is a trace message with no parameters"); log.removeFirst(Logger.Level.ERROR, "This is an error message with no parameters"); log.removeFirst(Logger.Level.WARNING, "This is a warning message with no parameters"); assertEquals(false, log.hasEvents()); }
@Test public void shouldLogAppropriateMessagesIfLog4jSetToInfoLevel() { log4jLogger.setLevel(Level.INFO); logger.error(errorMessageWithNoParameters); logger.warn(warningMessageWithNoParameters); logger.info(infoMessageWithNoParameters); logger.debug("This is a debug message with no parameters"); logger.trace("This is a trace message with no parameters"); log.removeFirst(Logger.Level.ERROR, "This is an error message with no parameters"); log.removeFirst(Logger.Level.WARNING, "This is a warning message with no parameters"); log.removeFirst(Logger.Level.INFO, "This is an info message with no parameters"); assertEquals(false, log.hasEvents()); }
@Test public void shouldLogAppropriateMessagesIfLog4jSetToErrorLevel() { log4jLogger.setLevel(Level.ERROR); logger.error(errorMessageWithNoParameters); logger.warn(warningMessageWithNoParameters); logger.info(infoMessageWithNoParameters); logger.debug("This is a debug message with no parameters"); logger.trace("This is a trace message with no parameters"); log.removeFirst(Logger.Level.ERROR, "This is an error message with no parameters"); assertEquals(false, log.hasEvents()); }