Search in sources :

Example 6 with AbstractJacksonLayout

use of org.apache.logging.log4j.jackson.AbstractJacksonLayout in project logging-log4j2 by apache.

the class JsonLayoutTest method testMutableLogEvent.

@Test
public void testMutableLogEvent() throws Exception {
    final AbstractJacksonLayout layout = JsonLayout.newBuilder().setLocationInfo(false).setProperties(false).setComplete(false).setCompact(true).setEventEol(false).setIncludeStacktrace(false).setAdditionalFields(new KeyValuePair[] { new KeyValuePair("KEY1", "VALUE1"), new KeyValuePair("KEY2", "${java:runtime}") }).setCharset(StandardCharsets.UTF_8).setConfiguration(ctx.getConfiguration()).build();
    Log4jLogEvent logEvent = LogEventFixtures.createLogEvent();
    final MutableLogEvent mutableEvent = new MutableLogEvent();
    mutableEvent.initFrom(logEvent);
    final String strLogEvent = layout.toSerializable(logEvent);
    final String strMutableEvent = layout.toSerializable(mutableEvent);
    assertEquals(strMutableEvent, strLogEvent, strMutableEvent);
}
Also used : KeyValuePair(org.apache.logging.log4j.core.util.KeyValuePair) Log4jLogEvent(org.apache.logging.log4j.core.impl.Log4jLogEvent) AbstractJacksonLayout(org.apache.logging.log4j.jackson.AbstractJacksonLayout) MutableLogEvent(org.apache.logging.log4j.core.impl.MutableLogEvent) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) Test(org.junit.Test)

Example 7 with AbstractJacksonLayout

use of org.apache.logging.log4j.jackson.AbstractJacksonLayout in project logging-log4j2 by apache.

the class JsonLayoutTest method prepareJsonForObjectMessageAsJsonObjectTests.

private String prepareJsonForObjectMessageAsJsonObjectTests(final int value, final boolean objectMessageAsJsonObject) {
    final TestClass testClass = new TestClass();
    testClass.setValue(value);
    // @formatter:off
    final Log4jLogEvent expected = Log4jLogEvent.newBuilder().setLoggerName("a.B").setLoggerFqcn("f.q.c.n").setLevel(Level.DEBUG).setMessage(new ObjectMessage(testClass)).setThreadName("threadName").setTimeMillis(1).build();
    // @formatter:off
    final AbstractJacksonLayout layout = JsonLayout.newBuilder().setCompact(true).setObjectMessageAsJsonObject(objectMessageAsJsonObject).build();
    // @formatter:off
    return layout.toSerializable(expected);
}
Also used : Log4jLogEvent(org.apache.logging.log4j.core.impl.Log4jLogEvent) ObjectMessage(org.apache.logging.log4j.message.ObjectMessage) AbstractJacksonLayout(org.apache.logging.log4j.jackson.AbstractJacksonLayout)

Example 8 with AbstractJacksonLayout

use of org.apache.logging.log4j.jackson.AbstractJacksonLayout in project logging-log4j2 by apache.

the class YamlLayoutTest method testAllFeatures.

private void testAllFeatures(final boolean includeSource, final boolean compact, final boolean eventEol, final boolean includeContext, final boolean contextMapAslist, final boolean includeStacktrace) throws Exception {
    final Log4jLogEvent expected = LogEventFixtures.createLogEvent();
    final AbstractJacksonLayout layout = YamlLayout.newBuilder().setLocationInfo(includeSource).setProperties(includeContext).setIncludeStacktrace(includeStacktrace).setCharset(StandardCharsets.UTF_8).build();
    final String str = layout.toSerializable(expected);
    // System.out.println(str);
    // Just check for \n since \r might or might not be there.
    assertEquals(str, !compact || eventEol, str.contains("\n"));
    assertEquals(str, includeSource, str.contains("source"));
    assertEquals(str, includeContext, str.contains("contextMap"));
    final Log4jLogEvent actual = new Log4jYamlObjectMapper(contextMapAslist, includeStacktrace, false).readValue(str, Log4jLogEvent.class);
    LogEventFixtures.assertEqualLogEvents(expected, actual, includeSource, includeContext, includeStacktrace);
    if (includeContext) {
        this.checkMapEntry("MDC.A", "A_Value", compact, str);
        this.checkMapEntry("MDC.B", "B_Value", compact, str);
    }
    // 
    assertNull(actual.getThrown());
    // make sure the names we want are used
    this.checkPropertyName("instant", compact, str, false);
    // and not threadName
    this.checkPropertyName("thread", compact, str, true);
    this.checkPropertyName("level", compact, str, true);
    this.checkPropertyName("loggerName", compact, str, true);
    this.checkPropertyName("marker", compact, str, false);
    this.checkPropertyName("name", compact, str, true);
    this.checkPropertyName("parents", compact, str, false);
    this.checkPropertyName("message", compact, str, true);
    this.checkPropertyName("thrown", compact, str, false);
    this.checkPropertyName("cause", compact, str, false);
    this.checkPropertyName("commonElementCount", compact, str, true);
    this.checkPropertyName("localizedMessage", compact, str, true);
    if (includeStacktrace) {
        this.checkPropertyName("extendedStackTrace", compact, str, false);
        this.checkPropertyName("class", compact, str, true);
        this.checkPropertyName("method", compact, str, true);
        this.checkPropertyName("file", compact, str, true);
        this.checkPropertyName("line", compact, str, true);
        this.checkPropertyName("exact", compact, str, true);
        this.checkPropertyName("location", compact, str, true);
        this.checkPropertyName("version", compact, str, true);
    } else {
        this.checkPropertyNameAbsent("extendedStackTrace", compact, str, false);
    }
    this.checkPropertyName("suppressed", compact, str, false);
    this.checkPropertyName("loggerFqcn", compact, str, true);
    this.checkPropertyName("endOfBatch", compact, str, true);
    if (includeContext) {
        this.checkPropertyName("contextMap", compact, str, false);
    } else {
        this.checkPropertyNameAbsent("contextMap", compact, str, false);
    }
    this.checkPropertyName("contextStack", compact, str, false);
    if (includeSource) {
        this.checkPropertyName("source", compact, str, false);
    } else {
        this.checkPropertyNameAbsent("source", compact, str, false);
    }
    // check some attrs
    this.checkProperty("loggerFqcn", "f.q.c.n", compact, str, true);
    this.checkProperty("loggerName", "a.B", compact, str, true);
}
Also used : Log4jLogEvent(org.apache.logging.log4j.core.impl.Log4jLogEvent) Log4jYamlObjectMapper(org.apache.logging.log4j.jackson.yaml.Log4jYamlObjectMapper) AbstractJacksonLayout(org.apache.logging.log4j.jackson.AbstractJacksonLayout)

Example 9 with AbstractJacksonLayout

use of org.apache.logging.log4j.jackson.AbstractJacksonLayout in project logging-log4j2 by apache.

the class YamlLayoutTest method testLayoutLoggerName.

@Test
public void testLayoutLoggerName() throws Exception {
    final AbstractJacksonLayout layout = YamlLayout.newBuilder().setLocationInfo(false).setProperties(false).setIncludeStacktrace(true).setCharset(StandardCharsets.UTF_8).build();
    final Log4jLogEvent expected = // 
    Log4jLogEvent.newBuilder().setLoggerName(// 
    "a.B").setLoggerFqcn(// 
    "f.q.c.n").setLevel(// 
    Level.DEBUG).setMessage(// 
    new SimpleMessage("M")).setThreadName(// 
    "threadName").setTimeMillis(1).build();
    final String str = layout.toSerializable(expected);
    assertThat(str, containsString("loggerName: \"a.B\""));
    final Log4jLogEvent actual = new Log4jYamlObjectMapper(false, true, false).readValue(str, Log4jLogEvent.class);
    assertEquals(expected.getLoggerName(), actual.getLoggerName());
    assertEquals(expected, actual);
}
Also used : Log4jLogEvent(org.apache.logging.log4j.core.impl.Log4jLogEvent) Log4jYamlObjectMapper(org.apache.logging.log4j.jackson.yaml.Log4jYamlObjectMapper) SimpleMessage(org.apache.logging.log4j.message.SimpleMessage) AbstractJacksonLayout(org.apache.logging.log4j.jackson.AbstractJacksonLayout) Test(org.junit.Test)

Example 10 with AbstractJacksonLayout

use of org.apache.logging.log4j.jackson.AbstractJacksonLayout in project logging-log4j2 by apache.

the class YamlLayoutTest method prepareYAMLForStacktraceTests.

private String prepareYAMLForStacktraceTests(final boolean stacktraceAsString) {
    final Log4jLogEvent expected = LogEventFixtures.createLogEvent();
    // @formatter:off
    final AbstractJacksonLayout layout = YamlLayout.newBuilder().setIncludeStacktrace(true).setStacktraceAsString(stacktraceAsString).build();
    // @formatter:on
    return layout.toSerializable(expected);
}
Also used : Log4jLogEvent(org.apache.logging.log4j.core.impl.Log4jLogEvent) AbstractJacksonLayout(org.apache.logging.log4j.jackson.AbstractJacksonLayout)

Aggregations

AbstractJacksonLayout (org.apache.logging.log4j.jackson.AbstractJacksonLayout)32 Test (org.junit.Test)26 Log4jLogEvent (org.apache.logging.log4j.core.impl.Log4jLogEvent)14 CoreMatchers.containsString (org.hamcrest.CoreMatchers.containsString)12 KeyValuePair (org.apache.logging.log4j.core.util.KeyValuePair)7 Log4jJsonObjectMapper (org.apache.logging.log4j.jackson.json.Log4jJsonObjectMapper)5 Appender (org.apache.logging.log4j.core.Appender)4 Configuration (org.apache.logging.log4j.core.config.Configuration)4 MutableLogEvent (org.apache.logging.log4j.core.impl.MutableLogEvent)4 ListAppender (org.apache.logging.log4j.core.test.appender.ListAppender)4 SimpleMessage (org.apache.logging.log4j.message.SimpleMessage)4 AbstractLogger (org.apache.logging.log4j.spi.AbstractLogger)4 JavaLookup (org.apache.logging.log4j.core.lookup.JavaLookup)3 ObjectMessage (org.apache.logging.log4j.message.ObjectMessage)3 ParameterizedMessage (org.apache.logging.log4j.message.ParameterizedMessage)3 DefaultConfiguration (org.apache.logging.log4j.core.config.DefaultConfiguration)2 Log4jYamlObjectMapper (org.apache.logging.log4j.jackson.yaml.Log4jYamlObjectMapper)2 Message (org.apache.logging.log4j.message.Message)2 RingBufferLogEvent (org.apache.logging.log4j.core.async.RingBufferLogEvent)1 DummyNanoClock (org.apache.logging.log4j.core.time.internal.DummyNanoClock)1