use of org.apache.logging.log4j.status.StatusListener in project logging-log4j2 by apache.
the class CustomConfigurationTest method testConfig.
@Test
public void testConfig() {
// don't bother using "error" since that's the default; try another level
final LoggerContext ctx = this.init.getLoggerContext();
ctx.reconfigure();
final Configuration config = ctx.getConfiguration();
assertThat(config, instanceOf(XmlConfiguration.class));
for (final StatusListener listener : StatusLogger.getLogger().getListeners()) {
if (listener instanceof StatusConsoleListener) {
assertSame(listener.getStatusLevel(), Level.INFO);
break;
}
}
final Layout<? extends Serializable> layout = PatternLayout.newBuilder().withPattern(PatternLayout.SIMPLE_CONVERSION_PATTERN).withConfiguration(config).build();
// @formatter:off
final FileAppender appender = FileAppender.newBuilder().withFileName(LOG_FILE).withAppend(false).withName("File").withIgnoreExceptions(false).withBufferSize(4000).withBufferedIo(false).withLayout(layout).build();
// @formatter:on
appender.start();
config.addAppender(appender);
final AppenderRef ref = AppenderRef.createAppenderRef("File", null, null);
final AppenderRef[] refs = new AppenderRef[] { ref };
final LoggerConfig loggerConfig = LoggerConfig.createLogger(false, Level.INFO, "org.apache.logging.log4j", "true", refs, null, config, null);
loggerConfig.addAppender(appender, null, null);
config.addLogger("org.apache.logging.log4j", loggerConfig);
ctx.updateLoggers();
final Logger logger = ctx.getLogger(CustomConfigurationTest.class.getName());
logger.info("This is a test");
final File file = new File(LOG_FILE);
assertThat(file, exists());
assertThat(file, hasLength(greaterThan(0L)));
}
use of org.apache.logging.log4j.status.StatusListener in project logging-log4j2 by apache.
the class HttpAppenderTest method testAppendErrorIgnore.
@Test
public void testAppendErrorIgnore() throws Exception {
wireMockRule.stubFor(post(urlEqualTo("/test/log4j/")).willReturn(FAILURE_RESPONSE));
StatusLogger.getLogger().registerListener(new StatusListener() {
@Override
public void log(StatusData data) {
error = data;
}
@Override
public Level getStatusLevel() {
return Level.ERROR;
}
@Override
public void close() throws IOException {
}
});
error = null;
final Appender appender = HttpAppender.newBuilder().withName("Http").withLayout(JsonLayout.createDefaultLayout()).setConfiguration(ctx.getConfiguration()).setUrl(new URL("http://localhost:" + wireMockRule.port() + "/test/log4j/")).build();
appender.append(createLogEvent());
wireMockRule.verify(postRequestedFor(urlEqualTo("/test/log4j/")).withHeader("Host", containing("localhost")).withHeader("Content-Type", containing("application/json")).withRequestBody(containing("\"message\" : \"" + LOG_MESSAGE + "\"")));
assertNotNull(error);
assertEquals(Level.ERROR, error.getLevel());
assertEquals("Unable to send HTTP in appender [Http]", error.getMessage().toString());
}
use of org.apache.logging.log4j.status.StatusListener in project logging-log4j2 by apache.
the class StatusConfiguration method configureExistingStatusConsoleListener.
private boolean configureExistingStatusConsoleListener() {
boolean configured = false;
for (final StatusListener statusListener : this.logger.getListeners()) {
if (statusListener instanceof StatusConsoleListener) {
final StatusConsoleListener listener = (StatusConsoleListener) statusListener;
listener.setLevel(this.status);
this.logger.updateListenerLevel(this.status);
if (this.verbosity == Verbosity.QUIET) {
listener.setFilters(this.verboseClasses);
}
configured = true;
}
}
return configured;
}
use of org.apache.logging.log4j.status.StatusListener in project logging-log4j2 by apache.
the class StatusLoggerAdmin method removeListeners.
/**
* Add listener to StatusLogger for this context, or replace it if it already exists.
*
* @param ctxName
*/
private void removeListeners(final String ctxName) {
final StatusLogger logger = StatusLogger.getLogger();
final Iterable<StatusListener> listeners = logger.getListeners();
// Remove any StatusLoggerAdmin listeners already registered for this context
for (final StatusListener statusListener : listeners) {
if (statusListener instanceof StatusLoggerAdmin) {
final StatusLoggerAdmin adminListener = (StatusLoggerAdmin) statusListener;
if (ctxName != null && ctxName.equals(adminListener.contextName)) {
logger.removeListener(adminListener);
}
}
}
}
Aggregations