Search in sources :

Example 46 with ListAppender

use of org.apache.logging.log4j.test.appender.ListAppender in project logging-log4j2 by apache.

the class LoggerTest method testLog.

@Test
@SuppressWarnings("deprecation")
public void testLog() {
    final PatternLayout layout = PatternLayout.newBuilder().withPattern("%d %C %L %m").build();
    final ListAppender appender = new ListAppender("List", null, layout, false, false);
    appender.start();
    final Logger root = Logger.getRootLogger();
    try {
        root.getLogger().addAppender(appender);
        root.setLevel(Level.INFO);
        final MyLogger log = new MyLogger(root);
        log.logInfo("This is a test", null);
        root.log(Priority.INFO, "Test msg2", null);
        root.log(Priority.INFO, "Test msg3");
        final List<String> msgs = appender.getMessages();
        assertTrue("Incorrect number of messages", msgs.size() == 3);
        final String msg = msgs.get(0);
        assertTrue("Message contains incorrect class name: " + msg, msg.contains(LoggerTest.class.getName()));
        appender.stop();
    } finally {
        root.getLogger().removeAppender(appender);
    }
}
Also used : PatternLayout(org.apache.logging.log4j.core.layout.PatternLayout) ListAppender(org.apache.logging.log4j.test.appender.ListAppender) Test(org.junit.Test)

Example 47 with ListAppender

use of org.apache.logging.log4j.test.appender.ListAppender in project logging-log4j2 by apache.

the class LoggerTest method testTrace.

/* Don't support hierarchy
    public void testHierarchy1() {
        Hierarchy h = new Hierarchy(new RootLogger((Level) Level.ERROR));
        Logger a0 = h.getLogger("a");
        assertEquals("a", a0.getName());
        assertNull(a0.getLevel());
        assertSame(Level.ERROR, a0.getEffectiveLevel());

        Logger a1 = h.getLogger("a");
        assertSame(a0, a1);
    } */
/**
     * Tests logger.trace(Object).
     */
@Test
public void testTrace() {
    final ListAppender appender = new ListAppender("List");
    appender.start();
    final Logger root = Logger.getRootLogger();
    root.getLogger().addAppender(appender);
    root.setLevel(Level.INFO);
    final Logger tracer = Logger.getLogger("com.example.Tracer");
    tracer.setLevel(Level.TRACE);
    tracer.trace("Message 1");
    root.trace("Discarded Message");
    root.trace("Discarded Message");
    final List<LogEvent> msgs = appender.getEvents();
    assertEquals(1, msgs.size());
    final LogEvent event = msgs.get(0);
    assertEquals(org.apache.logging.log4j.Level.TRACE, event.getLevel());
    assertEquals("Message 1", event.getMessage().getFormat());
    appender.stop();
    root.getLogger().removeAppender(appender);
}
Also used : LogEvent(org.apache.logging.log4j.core.LogEvent) ListAppender(org.apache.logging.log4j.test.appender.ListAppender) Test(org.junit.Test)

Example 48 with ListAppender

use of org.apache.logging.log4j.test.appender.ListAppender in project logging-log4j2 by apache.

the class ScriptAppenderSelectorTest method logAndCheck.

private void logAndCheck() {
    final Marker marker = MarkerManager.getMarker("HEXDUMP");
    final Logger logger = loggerContextRule.getLogger(ScriptAppenderSelectorTest.class);
    logger.error("Hello");
    final ListAppender listAppender = getListAppender();
    final List<LogEvent> list = listAppender.getEvents();
    assertNotNull("No events generated", list);
    assertTrue("Incorrect number of events. Expected 1, got " + list.size(), list.size() == 1);
    logger.error("World");
    assertTrue("Incorrect number of events. Expected 2, got " + list.size(), list.size() == 2);
    logger.error(marker, "DEADBEEF");
    assertTrue("Incorrect number of events. Expected 3, got " + list.size(), list.size() == 3);
}
Also used : LogEvent(org.apache.logging.log4j.core.LogEvent) ListAppender(org.apache.logging.log4j.test.appender.ListAppender) Marker(org.apache.logging.log4j.Marker) Logger(org.apache.logging.log4j.core.Logger)

Example 49 with ListAppender

use of org.apache.logging.log4j.test.appender.ListAppender in project logging-log4j2 by apache.

the class CsvParameterLayoutTest method testLayoutNormalApi.

static void testLayoutNormalApi(final Logger root, final AbstractCsvLayout layout, final boolean messageApi) throws Exception {
    removeAppenders(root);
    // set up appender
    final ListAppender appender = new ListAppender("List", null, layout, true, false);
    appender.start();
    appender.countDownLatch = new CountDownLatch(4);
    // set appender on root and set level to debug
    root.addAppender(appender);
    root.setLevel(Level.DEBUG);
    // output messages
    if (messageApi) {
        logDebugObjectArrayMessage(root);
    } else {
        logDebugNormalApi(root);
    }
    final int msgCount = 4;
    if (appender.getMessages().size() < msgCount) {
        // wait until background thread finished processing
        appender.countDownLatch.await(10, TimeUnit.SECONDS);
    }
    assertEquals("Background thread did not finish processing: msg count", msgCount, appender.getMessages().size());
    // don't stop appender until background thread is done
    appender.stop();
    final List<String> list = appender.getMessages();
    final char d = layout.getFormat().getDelimiter();
    Assert.assertEquals("1" + d + "2" + d + "3", list.get(0));
    Assert.assertEquals("2" + d + "3", list.get(1));
    Assert.assertEquals("5" + d + "6", list.get(2));
    Assert.assertEquals("7" + d + "8" + d + "9" + d + "10", list.get(3));
}
Also used : ListAppender(org.apache.logging.log4j.test.appender.ListAppender) CountDownLatch(java.util.concurrent.CountDownLatch)

Example 50 with ListAppender

use of org.apache.logging.log4j.test.appender.ListAppender in project logging-log4j2 by apache.

the class GelfLayoutTest method testCompressedLayout.

private void testCompressedLayout(final CompressionType compressionType, final boolean includeStacktrace, final boolean includeThreadContext, String host, final boolean includeNullDelimiter) throws IOException {
    for (final Appender appender : root.getAppenders().values()) {
        root.removeAppender(appender);
    }
    // set up appenders
    final GelfLayout layout = GelfLayout.newBuilder().setConfiguration(ctx.getConfiguration()).setHost(host).setAdditionalFields(new KeyValuePair[] { new KeyValuePair(KEY1, VALUE1), new KeyValuePair(KEY2, "${java:runtime}") }).setCompressionType(compressionType).setCompressionThreshold(1024).setIncludeStacktrace(includeStacktrace).setIncludeThreadContext(includeThreadContext).setIncludeNullDelimiter(includeNullDelimiter).build();
    final ListAppender eventAppender = new ListAppender("Events", null, null, true, false);
    final ListAppender rawAppender = new ListAppender("Raw", null, layout, true, true);
    final ListAppender formattedAppender = new ListAppender("Formatted", null, layout, true, false);
    final EncodingListAppender encodedAppender = new EncodingListAppender("Encoded", null, layout, false, true);
    eventAppender.start();
    rawAppender.start();
    formattedAppender.start();
    encodedAppender.start();
    if (host == null)
        host = NetUtils.getLocalHostname();
    final JavaLookup javaLookup = new JavaLookup();
    // set appenders on root and set level to debug
    root.addAppender(eventAppender);
    root.addAppender(rawAppender);
    root.addAppender(formattedAppender);
    root.addAppender(encodedAppender);
    root.setLevel(Level.DEBUG);
    root.debug(LINE1);
    ThreadContext.put(MDCKEY1, MDCVALUE1);
    ThreadContext.put(MDCKEY2, MDCVALUE2);
    root.info(LINE2);
    final Exception exception = new RuntimeException("some error");
    root.error(LINE3, exception);
    formattedAppender.stop();
    final List<LogEvent> events = eventAppender.getEvents();
    final List<byte[]> raw = rawAppender.getData();
    final List<String> messages = formattedAppender.getMessages();
    final List<byte[]> raw2 = encodedAppender.getData();
    final String threadName = Thread.currentThread().getName();
    //@formatter:off
    assertJsonEquals("{" + "\"version\": \"1.1\"," + "\"host\": \"" + host + "\"," + "\"timestamp\": " + GelfLayout.formatTimestamp(events.get(0).getTimeMillis()) + "," + "\"level\": 7," + "\"_thread\": \"" + threadName + "\"," + "\"_logger\": \"\"," + "\"short_message\": \"" + LINE1 + "\"," + "\"_" + KEY1 + "\": \"" + VALUE1 + "\"," + "\"_" + KEY2 + "\": \"" + javaLookup.getRuntime() + "\"" + "}", messages.get(0));
    assertJsonEquals("{" + "\"version\": \"1.1\"," + "\"host\": \"" + host + "\"," + "\"timestamp\": " + GelfLayout.formatTimestamp(events.get(1).getTimeMillis()) + "," + "\"level\": 6," + "\"_thread\": \"" + threadName + "\"," + "\"_logger\": \"\"," + "\"short_message\": \"" + LINE2 + "\"," + (includeThreadContext ? "\"_" + MDCKEY1 + "\": \"" + MDCVALUE1 + "\"," + "\"_" + MDCKEY2 + "\": \"" + MDCVALUE2 + "\"," : "") + "\"_" + KEY1 + "\": \"" + VALUE1 + "\"," + "\"_" + KEY2 + "\": \"" + javaLookup.getRuntime() + "\"" + "}", messages.get(1));
    //@formatter:on
    final byte[] compressed = raw.get(2);
    final byte[] compressed2 = raw2.get(2);
    final ByteArrayInputStream bais = new ByteArrayInputStream(compressed);
    final ByteArrayInputStream bais2 = new ByteArrayInputStream(compressed2);
    InputStream inflaterStream;
    InputStream inflaterStream2;
    switch(compressionType) {
        case GZIP:
            inflaterStream = new GZIPInputStream(bais);
            inflaterStream2 = new GZIPInputStream(bais2);
            break;
        case ZLIB:
            inflaterStream = new InflaterInputStream(bais);
            inflaterStream2 = new InflaterInputStream(bais2);
            break;
        case OFF:
            inflaterStream = bais;
            inflaterStream2 = bais2;
            break;
        default:
            throw new IllegalStateException("Missing test case clause");
    }
    final byte[] uncompressed = IOUtils.toByteArray(inflaterStream);
    final byte[] uncompressed2 = IOUtils.toByteArray(inflaterStream2);
    inflaterStream.close();
    inflaterStream2.close();
    final String uncompressedString = new String(uncompressed, layout.getCharset());
    final String uncompressedString2 = new String(uncompressed2, layout.getCharset());
    //@formatter:off
    final String expected = "{" + "\"version\": \"1.1\"," + "\"host\": \"" + host + "\"," + "\"timestamp\": " + GelfLayout.formatTimestamp(events.get(2).getTimeMillis()) + "," + "\"level\": 3," + "\"_thread\": \"" + threadName + "\"," + "\"_logger\": \"\"," + "\"short_message\": \"" + LINE3 + "\"," + "\"full_message\": \"" + String.valueOf(JsonStringEncoder.getInstance().quoteAsString(includeStacktrace ? GelfLayout.formatThrowable(exception).toString() : exception.toString())) + "\"," + (includeThreadContext ? "\"_" + MDCKEY1 + "\": \"" + MDCVALUE1 + "\"," + "\"_" + MDCKEY2 + "\": \"" + MDCVALUE2 + "\"," : "") + "\"_" + KEY1 + "\": \"" + VALUE1 + "\"," + "\"_" + KEY2 + "\": \"" + javaLookup.getRuntime() + "\"" + "}";
    //@formatter:on
    assertJsonEquals(expected, uncompressedString);
    assertJsonEquals(expected, uncompressedString2);
}
Also used : ListAppender(org.apache.logging.log4j.test.appender.ListAppender) EncodingListAppender(org.apache.logging.log4j.test.appender.EncodingListAppender) KeyValuePair(org.apache.logging.log4j.core.util.KeyValuePair) GZIPInputStream(java.util.zip.GZIPInputStream) InflaterInputStream(java.util.zip.InflaterInputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) InflaterInputStream(java.util.zip.InflaterInputStream) JavaLookup(org.apache.logging.log4j.core.lookup.JavaLookup) EncodingListAppender(org.apache.logging.log4j.test.appender.EncodingListAppender) IOException(java.io.IOException) GZIPInputStream(java.util.zip.GZIPInputStream) ByteArrayInputStream(java.io.ByteArrayInputStream) ListAppender(org.apache.logging.log4j.test.appender.ListAppender) EncodingListAppender(org.apache.logging.log4j.test.appender.EncodingListAppender)

Aggregations

ListAppender (org.apache.logging.log4j.test.appender.ListAppender)64 Test (org.junit.Test)46 Appender (org.apache.logging.log4j.core.Appender)17 Logger (org.apache.logging.log4j.Logger)8 LogEvent (org.apache.logging.log4j.core.LogEvent)6 Configuration (org.apache.logging.log4j.core.config.Configuration)5 AbstractLogger (org.apache.logging.log4j.spi.AbstractLogger)5 Marker (org.apache.logging.log4j.Marker)4 Logger (org.apache.logging.log4j.core.Logger)4 KeyValuePair (org.apache.logging.log4j.core.util.KeyValuePair)4 StructuredDataMessage (org.apache.logging.log4j.message.StructuredDataMessage)3 ByteArrayInputStream (java.io.ByteArrayInputStream)2 IOException (java.io.IOException)2 CountDownLatch (java.util.concurrent.CountDownLatch)2 Logger (java.util.logging.Logger)2 Log (org.apache.commons.logging.Log)2 AppenderControl (org.apache.logging.log4j.core.config.AppenderControl)2 Logger (org.slf4j.Logger)2 InputStream (java.io.InputStream)1 ObjectInputStream (java.io.ObjectInputStream)1