throwable, event.getThreadName(), event.getContextData().toMap() ));
protected void assertLogEvent(final LogEvent logEvent) { assertThat(logEvent, is(notNullValue())); assertThat(logEvent.getInstant().getEpochMillisecond(), equalTo(1493121664118L)); assertThat(logEvent.getThreadName(), equalTo("main")); assertThat(logEvent.getThreadId(), equalTo(1L)); assertThat(logEvent.getThreadPriority(), equalTo(5)); assertThat(logEvent.getLevel(), equalTo(Level.INFO)); assertThat(logEvent.getLoggerName(), equalTo("HelloWorld")); assertThat(logEvent.getMarker().getName(), equalTo("child")); assertThat(logEvent.getMarker().getParents()[0].getName(), equalTo("parent")); assertThat(logEvent.getMarker().getParents()[0].getParents()[0].getName(), equalTo("grandparent")); assertThat(logEvent.getMessage().getFormattedMessage(), equalTo("Hello, world!")); assertThat(logEvent.getThrown(), is(nullValue())); assertThat(logEvent.getThrownProxy().getMessage(), equalTo("error message")); assertThat(logEvent.getThrownProxy().getName(), equalTo("java.lang.RuntimeException")); assertThat(logEvent.getThrownProxy().getExtendedStackTrace()[0].getClassName(), equalTo("logtest.Main")); assertThat(logEvent.getLoggerFqcn(), equalTo("org.apache.logging.log4j.spi.AbstractLogger")); assertThat(logEvent.getContextStack().asList(), equalTo(Arrays.asList("one", "two"))); assertThat((String) logEvent.getContextData().getValue("foo"), equalTo("FOO")); assertThat((String) logEvent.getContextData().getValue("bar"), equalTo("BAR")); assertThat(logEvent.getSource().getClassName(), equalTo("logtest.Main")); } }
@SuppressWarnings("deprecation") @Test public void testCreateEventInitFieldsProperly() throws Exception { final ReusableLogEventFactory factory = new ReusableLogEventFactory(); final LogEvent event = callCreateEvent(factory, "logger", Level.INFO, new SimpleMessage("xyz"), null); try { assertNotNull(event.getContextMap()); assertNotNull(event.getContextData()); assertNotNull(event.getContextStack()); } finally { ReusableLogEventFactory.release(event); } }
@SuppressWarnings("deprecation") static void assertEqualLogEvents(final LogEvent expected, final LogEvent actual, final boolean includeSource, final boolean includeContext, final boolean includeStacktrace) { assertEquals(expected.getClass(), actual.getClass()); assertEquals(includeContext ? expected.getContextData() : ContextDataFactory.createContextData(), actual.getContextData()); assertEquals(includeContext ? expected.getContextMap() : Collections.EMPTY_MAP, actual.getContextMap()); assertEquals(expected.getContextStack(), actual.getContextStack()); assertEquals(expected.getLevel(), actual.getLevel()); assertEquals(expected.getLoggerName(), actual.getLoggerName()); assertEquals(expected.getLoggerFqcn(), actual.getLoggerFqcn()); assertEquals(expected.getMarker(), actual.getMarker()); assertEquals(expected.getMessage(), actual.getMessage()); assertEquals(expected.getTimeMillis(), actual.getTimeMillis()); assertEquals(includeSource ? expected.getSource() : null, actual.getSource()); assertEquals(expected.getThreadName(), actual.getThreadName()); assertNotNull("original should have an exception", expected.getThrown()); assertNull("exception should not be serialized", actual.getThrown()); if (includeStacktrace) { // TODO should compare the rest of the ThrowableProxy assertEquals(expected.getThrownProxy(), actual.getThrownProxy()); } assertEquals(expected.isEndOfBatch(), actual.isEndOfBatch()); assertEquals(expected.isIncludeLocation(), actual.isIncludeLocation()); // original: non-null thrown & null thrownProxy // deserialized: null thrown & non-null thrownProxy assertNotEquals(expected.hashCode(), actual.hashCode()); assertNotEquals(expected, actual); }
assertTrue("Incorrect event", event.getMessage().getFormattedMessage().equals("This is a test message")); assertTrue("Message not delivered via TCP", tcpTestServer.getCount() > 0); assertEquals(expectedUuidStr, event.getContextData().getValue(tcKey)); event = tcpTestServer.getQueue().poll(3, TimeUnit.SECONDS); assertNotNull("No event retrieved", event);
@SuppressWarnings("deprecation") private void compareLogEvents(final LogEvent orig, final LogEvent changed) { // Ensure that everything but the Mapped Data is still the same assertEquals("LoggerName changed", orig.getLoggerName(), changed.getLoggerName()); assertEquals("Marker changed", orig.getMarker(), changed.getMarker()); assertEquals("FQCN changed", orig.getLoggerFqcn(), changed.getLoggerFqcn()); assertEquals("Level changed", orig.getLevel(), changed.getLevel()); assertArrayEquals("Throwable changed", orig.getThrown() == null ? null : orig.getThrownProxy().getExtendedStackTrace(), changed.getThrown() == null ? null : changed.getThrownProxy().getExtendedStackTrace() ); assertEquals("ContextMap changed", orig.getContextMap(), changed.getContextMap()); assertEquals("ContextData changed", orig.getContextData(), changed.getContextData()); assertEquals("ContextStack changed", orig.getContextStack(), changed.getContextStack()); assertEquals("ThreadName changed", orig.getThreadName(), changed.getThreadName()); assertEquals("Source changed", orig.getSource(), changed.getSource()); assertEquals("Millis changed", orig.getTimeMillis(), changed.getTimeMillis()); } }
assertEquals(contextData, e2.getContextData()); assertSame(contextStack, e2.getContextStack()); assertEquals(true, e2.isEndOfBatch());
assertEquals(evt.getThrown(), actual.getThrown()); assertEquals(evt.getContextMap(), actual.getContextMap()); assertEquals(evt.getContextData(), actual.getContextData()); assertEquals(evt.getContextStack(), actual.getContextStack()); assertEquals(evt.getThreadName(), actual.getThreadName());
assertEquals("same hashCode", event2.hashCode(), event.hashCode()); assertEquals(contextData, event2.getContextData()); assertSame(contextStack, event2.getContextStack()); assertEquals(true, event2.isEndOfBatch());
/** * Looks up the value from the ThreadContext Map. * @param event The current LogEvent. * @param key the key to be looked up, may be null * @return The value associated with the key. */ @Override public String lookup(final LogEvent event, final String key) { return event.getContextData().getValue(key); } }
/** * Gets the context map. Transient, since the String version of the data is obtained via ReadOnlyStringMap. * * @return the context data. * @see ContextDataAttributeConverter * @see org.apache.logging.log4j.core.appender.db.jpa.converter.ContextDataAttributeConverter */ @Override @Transient //@Convert(converter = ContextDataAttributeConverter.class) public ReadOnlyStringMap getContextData() { return this.getWrappedEvent().getContextData(); }
@Override public Result filter(final LogEvent event) { return super.filter(event.getContextData()) ? onMatch : onMismatch; }
/** * {@inheritDoc} */ @Override public void format(final LogEvent event, final StringBuilder toAppendTo) { if (key == null) { // if there is no additional options, we output every single Key/Value pair for the MDC toAppendTo.append('{'); event.getContextData().forEach(APPEND_EACH, toAppendTo); toAppendTo.append('}'); } else { // otherwise they just want a single key output final Object val = event.getContextData().getValue(key); if (val != null) { toAppendTo.append(val); } } }
@Override public Result filter(final LogEvent event) { return filter(event.getLevel(), event.getContextData()); }
@Override public final boolean isTriggeringEvent(final LogEvent logEvent) { final String stepId = logEvent.getContextData().getValue(KEY_TEST_STEP_ID); if(null == stepId) { return false; } ThreadContext.put(KEY_TEST_STEP_ID, stepId); if(stepId.equals(lastStepId)) { return false; } else { lastStepId = stepId; manager.getFileName(); return true; } } }
@Override public void append(LogEvent event) { Event appenderEvent = new Event(event, event.getContextData().toMap()); if (this.manager.async) { this.events.add(appenderEvent); } else { sendEvent(appenderEvent, appenderEvent.getProperties()); } }
@Override public final boolean isTriggeringEvent(final LogEvent logEvent) { final String stepId = logEvent.getContextData().getValue(KEY_STEP_ID); if (null == stepId) { return false; } ThreadContext.put(KEY_STEP_ID, stepId); if (stepId.equals(lastStepId)) { return false; } else { lastStepId = stepId; manager.getFileName(); return true; } } }
@Override public void append(LogEvent event) { Event appenderEvent = new Event(event, event.getContextData().toMap()); if (this.manager.async) { this.events.add(appenderEvent); } else { sendEvent(appenderEvent, appenderEvent.getProperties()); } }
/** * Rewrite the event. * @param source a logging event that may be returned or * used to create a new logging event. * @return The LogEvent after rewriting. */ @Override public LogEvent rewrite(final LogEvent source) { final Map<String, String> props = new HashMap<>(source.getContextData().toMap()); for (final Map.Entry<Property, Boolean> entry : properties.entrySet()) { final Property prop = entry.getKey(); props.put(prop.getName(), entry.getValue().booleanValue() ? config.getStrSubstitutor().replace(prop.getValue()) : prop.getValue()); } final LogEvent result = new Log4jLogEvent.Builder(source).setContextMap(props).build(); return result; }
private LogEvent subLog(LogEvent event) { return Log4jLogEvent.newBuilder() .setLevel(event.getLevel()) .setLoggerName(event.getLoggerName()) .setLoggerFqcn(event.getLoggerFqcn()) .setMessage(subAppend(event)) .setThrown(event.getThrown()) .setContextData((StringMap) event.getContextData()) .setContextStack(event.getContextStack()) .setThreadName(event.getThreadName()) .setSource(event.getSource()) .setTimeMillis(event.getTimeMillis()) .build(); }