@Test
public void testJSR47Logger() throws Exception {
final List<LogRecord> records = new ArrayList<LogRecord>();
// Tell the logger to log everything
ConsoleHandler handler = (ConsoleHandler) LogManager.getLogManager().getLogger("")
.getHandlers()[0];
java.util.logging.Level oldLevel = handler.getLevel();
handler.setLevel(Level.ALL);
// Capture the logging output without actually logging it
handler.setFilter(new Filter() {
public boolean isLoggable(LogRecord record) {
records.add(record);
System.out.printf("[%s] %s%n", record.getSourceClassName(), record.getMessage());
return false;
}
});
UIMAFramework.getLogger().setLevel(org.apache.uima.util.Level.INFO);
try {
UimaContextAdmin ctx = new RootUimaContext_impl();
ctx.setLogger(JSR47Logger_impl.getInstance());
ExtendedLogger logger = new ExtendedLogger(ctx);
logger.setLevel(org.apache.uima.util.Level.ALL);
trigger(logger);
logger.setLevel(org.apache.uima.util.Level.OFF);
trigger(logger);
assertEquals(10, records.size());
assertEquals(Level.FINER, records.get(0).getLevel());
assertEquals(Level.FINER, records.get(1).getLevel());
assertEquals(Level.FINE, records.get(2).getLevel());
assertEquals(Level.FINE, records.get(3).getLevel());
assertEquals(Level.INFO, records.get(4).getLevel());
assertEquals(Level.INFO, records.get(5).getLevel());
assertEquals(Level.WARNING, records.get(6).getLevel());
assertEquals(Level.WARNING, records.get(7).getLevel());
assertEquals(Level.SEVERE, records.get(8).getLevel());
assertEquals(Level.SEVERE, records.get(9).getLevel());
} finally {
if (oldLevel != null) {
handler.setLevel(oldLevel);
handler.setFilter(null);
}
}
}