Skip to content

Instantly share code, notes, and snippets.

@linusfoldemo
Last active October 6, 2015 11:59
Show Gist options
  • Save linusfoldemo/175a54e2a65e24dab0f0 to your computer and use it in GitHub Desktop.
Save linusfoldemo/175a54e2a65e24dab0f0 to your computer and use it in GitHub Desktop.
Assert log events in logback
private final static Set<ILoggingEvent> loggingEvents = [] as Set
private void reset() {
loggingEvents.clear()
initializeMockLogAppender();
}
public void assertOneErrorLogEvent(String expectedMessage) {
assert loggingEvents.size() == 1
assert loggingEvents.first().getThrowableProxy().message == expectedMessage
}
private void initializeMockLogAppender() {
final appender = new MockAppender(Level.ERROR,
[SomeClass.class.name, SomeOtherClass.class.name])
final rootLogger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
appender.setContext(rootLogger.getLoggerContext())
appender.start()
rootLogger.addAppender(appender);
}
private static class MockAppender extends AppenderBase<ILoggingEvent> {
private final Level levelFilter;
private final List<String> loggerNameFilter;
MockAppender(Level levelFilter, List<String> loggerNameFilter) {
this.levelFilter = levelFilter
this.loggerNameFilter = loggerNameFilter
}
@Override
protected void append(final ILoggingEvent loggingEvent) {
if (loggingEvent.level == levelFilter && loggerNameFilter.contains(loggingEvent.getLoggerName())) {
loggingEvents.add(loggingEvent);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment