类org.apache.logging.log4j.message.StructuredDataMessage源码实例Demo

下面列出了怎么用org.apache.logging.log4j.message.StructuredDataMessage的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: logging-log4j2   文件: EventDataConverter.java
public Message convertEvent(final String message, final Object[] objects, final Throwable throwable) {
    try {
        final EventData data = objects != null && objects[0] instanceof EventData ?
                (EventData) objects[0] : new EventData(message);
        final StructuredDataMessage msg =
                new StructuredDataMessage(data.getEventId(), data.getMessage(), data.getEventType());
        for (final Map.Entry<String, Object> entry : data.getEventMap().entrySet()) {
            final String key = entry.getKey();
            if (EventData.EVENT_TYPE.equals(key) || EventData.EVENT_ID.equals(key)
                    || EventData.EVENT_MESSAGE.equals(key)) {
                continue;
            }
            msg.put(key, String.valueOf(entry.getValue()));
        }
        return msg;
    } catch (final Exception ex) {
        return new ParameterizedMessage(message, objects, throwable);
    }
}
 
源代码2 项目: logging-log4j2   文件: FlumeEmbeddedAgentTest.java
@Test
public void testMultiple() throws IOException {

    for (int i = 0; i < 10; ++i) {
        final StructuredDataMessage msg = new StructuredDataMessage("Test", "Test Multiple " + i, "Test");
        EventLogger.logEvent(msg);
    }
    for (int i = 0; i < 10; ++i) {
        final Event event = primary.poll();
        Assert.assertNotNull(event);
        final String body = getBody(event);
        final String expected = "Test Multiple " + i;
        Assert.assertTrue("Channel contained event, but not expected message. Received: " + body,
            body.endsWith(expected));
    }
}
 
@Test
public void testMultiple() throws IOException {

    for (int i = 0; i < 10; ++i) {
        final StructuredDataMessage msg = new StructuredDataMessage("Test", "Test Multiple " + i, "Test");
        EventLogger.logEvent(msg);
    }
    for (int i = 0; i < 10; ++i) {
        final Event event = primary.poll();
        Assert.assertNotNull("Event should not be null", event);
        final String body = getBody(event);
        final String expected = "Test Multiple " + i;
        Assert.assertTrue("Channel contained event, but not expected message. Received: " + body,
            body.endsWith(expected));
    }
}
 
@Test
public void testMultiple() {

    for (int i = 0; i < 10; ++i) {
        final StructuredDataMessage msg = new StructuredDataMessage("Test", "Test Multiple " + i, "Test");
        msg.put("counter", Integer.toString(i));
        EventLogger.logEvent(msg);
    }
    final boolean[] fields = new boolean[10];
    for (int i = 0; i < 10; ++i) {
        final Event event = primary.poll();
        Assert.assertNotNull("Received " + i + " events. Event " + (i + 1) + " is null", event);
        final String value = event.getHeaders().get("counter");
        Assert.assertNotNull("Missing 'counter' in map " + event.getHeaders() + ", i = " + i, value);
        final int counter = Integer.parseInt(value);
        if (fields[counter]) {
            Assert.fail("Duplicate event");
        } else {
            fields[counter] = true;
        }
    }
    for (int i = 0; i < 10; ++i) {
        Assert.assertTrue("Channel contained event, but not expected message " + i, fields[i]);
    }
}
 
源代码5 项目: logging-log4j2   文件: MapMessageLookupTest.java
@Test
public void testStructuredDataMessageLookup() {
    // GIVEN: A StructuredDataMessage object
    final StructuredDataMessage message = new StructuredDataMessage("id", "msg", "type");

    message.put("A", "a");
    message.put("B", "b");
    message.put("C", "c");

    // AND: An event with that message
    final LogEvent event = Log4jLogEvent.newBuilder().setLevel(Level.DEBUG).setMessage(message).build();

    // AND: A MapMessageLookup object
    final MapMessageLookup lookup = new MapMessageLookup();

    // WHEN: Lookup is performed
    final String a = lookup.lookup(event, "A");
    final String b = lookup.lookup(event, "B");
    final String c = lookup.lookup(event, "C");

    // THEN: The looked up values are correct
    assertEquals("a", a);
    assertEquals("b", b);
    assertEquals("c", c);
}
 
源代码6 项目: logging-log4j2   文件: StructuredDataFilter.java
protected Result filter(final StructuredDataMessage message) {
    boolean match = false;
    final IndexedReadOnlyStringMap map = getStringMap();
    for (int i = 0; i < map.size(); i++) {
        final StringBuilder toMatch = getValue(message, map.getKeyAt(i));
        if (toMatch != null) {
            match = listContainsValue((List<String>) map.getValueAt(i), toMatch);
        } else {
            match = false;
        }
        if ((!isAnd() && match) || (isAnd() && !match)) {
            break;
        }
    }
    return match ? onMatch : onMismatch;
}
 
源代码7 项目: logging-log4j2   文件: StructuredDataFilter.java
private StringBuilder getValue(final StructuredDataMessage data, final String key) {
    final StringBuilder sb = getStringBuilder();
    if (key.equalsIgnoreCase("id")) {
        data.getId().formatTo(sb);
        return sb;
    } else if (key.equalsIgnoreCase("id.name")) {
        return appendOrNull(data.getId().getName(), sb);
    } else if (key.equalsIgnoreCase("type")) {
        return appendOrNull(data.getType(), sb);
    } else if (key.equalsIgnoreCase("message")) {
        data.formatTo(sb);
        return sb;
    } else {
        return appendOrNull(data.get(key), sb);
    }
}
 
源代码8 项目: logging-log4j2   文件: Rfc5424Layout.java
private void appendMessage(final StringBuilder buffer, final LogEvent event) {
    final Message message = event.getMessage();
    // This layout formats StructuredDataMessages instead of delegating to the Message itself.
    final String text = (message instanceof StructuredDataMessage || message instanceof MessageCollectionMessage)
            ? message.getFormat() : message.getFormattedMessage();

    if (text != null && text.length() > 0) {
        buffer.append(' ').append(escapeNewlines(text, escapeNewLine));
    }

    if (exceptionFormatters != null && event.getThrown() != null) {
        final StringBuilder exception = new StringBuilder(LF);
        for (final PatternFormatter formatter : exceptionFormatters) {
            formatter.format(event, exception);
        }
        buffer.append(escapeNewlines(exception.toString(), escapeNewLine));
    }
    if (includeNewLine) {
        buffer.append(LF);
    }
}
 
源代码9 项目: logging-log4j2   文件: RewriteAppenderTest.java
@Test
public void rewriteTest() {
    final StructuredDataMessage msg = new StructuredDataMessage("Test", "This is a test", "Service");
    msg.put("Key1", "Value1");
    msg.put("Key2", "Value2");
    EventLogger.logEvent(msg);
    final List<LogEvent> list = app.getEvents();
    assertNotNull("No events generated", list);
    assertTrue("Incorrect number of events. Expected 1, got " + list.size(), list.size() == 1);
    final LogEvent event = list.get(0);
    final Message m = event.getMessage();
    assertTrue("Message is not a StringMapMessage: " + m.getClass(), m instanceof StructuredDataMessage);
    final StructuredDataMessage message = (StructuredDataMessage) m;
    final Map<String, String> map = message.getData();
    assertNotNull("No Map", map);
    assertTrue("Incorrect number of map entries, expected 3 got " + map.size(), map.size() == 3);
    final String value = map.get("Key1");
    assertEquals("Apache", value);
}
 
源代码10 项目: logging-log4j2   文件: MapRewritePolicyTest.java
@Test
public void addTest() {
    final MapRewritePolicy addPolicy = MapRewritePolicy.createPolicy("Add", rewrite);
    LogEvent rewritten = addPolicy.rewrite(logEvent0);
    compareLogEvents(logEvent0, rewritten);
    assertEquals("Simple log message changed", logEvent0.getMessage(), rewritten.getMessage());

    rewritten = addPolicy.rewrite(logEvent1);
    compareLogEvents(logEvent1, rewritten);
    checkAdded(((StringMapMessage)rewritten.getMessage()).getData());

    rewritten = addPolicy.rewrite(logEvent2);
    compareLogEvents(logEvent2, rewritten);
    checkAdded(((StructuredDataMessage)rewritten.getMessage()).getData());

    rewritten = addPolicy.rewrite(logEvent3);
    compareLogEvents(logEvent3, rewritten);
    checkAdded(((StringMapMessage)rewritten.getMessage()).getData());
}
 
源代码11 项目: logging-log4j2   文件: MapRewritePolicyTest.java
@Test
public void updateTest() {
    final MapRewritePolicy updatePolicy = MapRewritePolicy.createPolicy("Update", rewrite);
    LogEvent rewritten = updatePolicy.rewrite(logEvent0);
    compareLogEvents(logEvent0, rewritten);
    assertEquals("Simple log message changed", logEvent0.getMessage(), rewritten.getMessage());

    rewritten = updatePolicy.rewrite(logEvent1);
    compareLogEvents(logEvent1, rewritten);
    checkUpdated(((StringMapMessage)rewritten.getMessage()).getData());

    rewritten = updatePolicy.rewrite(logEvent2);
    compareLogEvents(logEvent2, rewritten);
    checkUpdated(((StructuredDataMessage)rewritten.getMessage()).getData());

    rewritten = updatePolicy.rewrite(logEvent3);
    compareLogEvents(logEvent3, rewritten);
    checkUpdated(((StringMapMessage)rewritten.getMessage()).getData());
}
 
源代码12 项目: logging-log4j2   文件: MapRewritePolicyTest.java
@Test
public void defaultIsAdd() {
    final MapRewritePolicy addPolicy = MapRewritePolicy.createPolicy(null, rewrite);
    LogEvent rewritten = addPolicy.rewrite(logEvent0);
    compareLogEvents(logEvent0, rewritten);
    assertEquals("Simple log message changed", logEvent0.getMessage(), rewritten.getMessage());

    rewritten = addPolicy.rewrite(logEvent1);
    compareLogEvents(logEvent1, rewritten);
    checkAdded(((StringMapMessage)rewritten.getMessage()).getData());

    rewritten = addPolicy.rewrite(logEvent2);
    compareLogEvents(logEvent2, rewritten);
    checkAdded(((StructuredDataMessage)rewritten.getMessage()).getData());

    rewritten = addPolicy.rewrite(logEvent3);
    compareLogEvents(logEvent3, rewritten);
    checkAdded(((StringMapMessage)rewritten.getMessage()).getData());
}
 
@Issue("JENKINS-54088")
@Test
public void testUserCreationAndLoginFromRealm() throws Exception {
    assertEventCount(app.getEvents(), 0);

    HudsonPrivateSecurityRealm realm = new HudsonPrivateSecurityRealm(false, false, null);
    j.jenkins.setSecurityRealm(realm);

    User u1 = realm.createAccount("charlie", USERS.get("charlie"));
    u1.save();
    client.login("charlie", USERS.get("charlie"));

    // verify the audit event log messages as user creation and user login events
    StructuredDataMessage logMessageOne = (StructuredDataMessage) app.getEvents().get(0).getMessage();
    StructuredDataMessage logMessageTwo = (StructuredDataMessage) app.getEvents().get(1).getMessage();

    assertTrue(logMessageOne.toString().contains("createUser"));
    assertTrue(logMessageTwo.toString().contains("login"));

    // verify a login event occurred
    client.executeOnServer(() -> {
        Authentication a = Jenkins.getAuthentication();
        assertEquals("charlie", a.getName());

        return null;
    });

    assertEventCount(app.getEvents(), 2);
}
 
源代码14 项目: audit-log-plugin   文件: UserLogoutListenerTest.java
@Issue("JENKINS-54087")
@Test
public void testValidUsernameInMessageLogged() throws Exception {
    assertEventCount(app.getEvents(), 0);

    client.login("debbie", "debbie");
    logout(client);

    StructuredDataMessage logMessage = (StructuredDataMessage) app.getEvents().get(1).getMessage();

    assertEventCount(app.getEvents(), 2);
    assertTrue(logMessage.toString().contains("logout"));
    assertEquals("debbie", logMessage.get("userId"));
}
 
源代码15 项目: audit-log-plugin   文件: UserLoginListenerTest.java
@Issue("JENKINS-54087")
@Test
public void testValidUsernameInMessageLogged() throws Exception {
    assertEventCount(app.getEvents(), 0);

    client.login("debbie", "debbie");
    StructuredDataMessage logMessage = (StructuredDataMessage) app.getEvents().get(0).getMessage();

    assertEventCount(app.getEvents(), 1);
    assertTrue(logMessage.toString().contains("login"));
    assertEquals("debbie", logMessage.get("userId"));
}
 
源代码16 项目: logging-log4j-audit   文件: LogEventFactory.java
@SuppressWarnings("unchecked")
private void setProperty(Method method, Object[] objects) {
	String name = NamingUtils.lowerFirst(NamingUtils.getMethodShortName(method.getName()));
	if (objects == null || objects[0] == null) {
		throw new IllegalArgumentException("No value to be set for " + name);
	}

	StringBuilder errors = new StringBuilder();
	Annotation[] annotations = method.getDeclaredAnnotations();
	for (Annotation annotation : annotations) {
		if (annotation instanceof Constraints) {
			Constraints constraints = (Constraints) annotation;
			validateConstraints(false, constraints.value(), name, objects[0].toString(),
					errors);
		} else if (annotation instanceof Constraint) {
			Constraint constraint = (Constraint) annotation;
			constraintPlugins.validateConstraint(false, constraint.constraintType(),
					name, objects[0].toString(), constraint.constraintValue(), errors);
		}
	}
	if (errors.length() > 0) {
		throw new ConstraintValidationException(errors.toString());
	}

	String result;
	if (objects[0] instanceof List) {
		result = StringUtils.join(objects, ", ");
	} else if (objects[0] instanceof Map) {
		StructuredDataMessage extra = new StructuredDataMessage(name, null, null);
		extra.putAll((Map) objects[0]);
		msg.addContent(name, extra);
		return;
	} else {
		result = objects[0].toString();
	}

	msg.put(name, result);
}
 
源代码17 项目: logging-log4j2   文件: EventLoggerTest.java
@Test
public void structuredData() {
    ThreadContext.put("loginId", "JohnDoe");
    ThreadContext.put("ipAddress", "192.168.0.120");
    ThreadContext.put("locale", Locale.US.getDisplayName());
    final StructuredDataMessage msg = new StructuredDataMessage("[email protected]", "Transfer Complete", "Audit");
    msg.put("ToAccount", "123456");
    msg.put("FromAccount", "123457");
    msg.put("Amount", "200.00");
    EventLogger.logEvent(msg);
    ThreadContext.clearMap();
    assertEquals(1, results.size());
    final String expected = "EVENT OFF Audit [[email protected] Amount=\"200.00\" FromAccount=\"123457\" ToAccount=\"123456\"] Transfer Complete";
    assertThat("Incorrect structured data", results.get(0), startsWith(expected));
}
 
源代码18 项目: logging-log4j2   文件: LoggerTest.java
@Test
public void structuredData() {
    ThreadContext.put("loginId", "JohnDoe");
    ThreadContext.put("ipAddress", "192.168.0.120");
    ThreadContext.put("locale", Locale.US.getDisplayName());
    final StructuredDataMessage msg = new StructuredDataMessage("[email protected]", "Transfer Complete", "Transfer");
    msg.put("ToAccount", "123456");
    msg.put("FromAccount", "123457");
    msg.put("Amount", "200.00");
    logger.info(MarkerManager.getMarker("EVENT"), msg);
    ThreadContext.clearMap();
    assertEquals(1, results.size());
    assertThat("Incorrect structured data: ", results.get(0), startsWith(
            "EVENT INFO Transfer [[email protected] Amount=\"200.00\" FromAccount=\"123457\" ToAccount=\"123456\"] Transfer Complete"));
}
 
源代码19 项目: logging-log4j2   文件: FlumeAppenderTest.java
@Test
public void testStructured() throws IOException {
    final Agent[] agents = new Agent[] { Agent.createAgent("localhost",
            testPort) };
    final FlumeAppender avroAppender = FlumeAppender.createAppender(agents,
            null, null, "false", "Avro", null, "1000", "1000", "1", "1000",
            "avro", "false", null, null, null, "ReqCtx_", null, "true",
            "1", null, null, null, null);
    avroAppender.start();
    final Logger eventLogger = (Logger) LogManager.getLogger("EventLogger");
    Assert.assertNotNull(eventLogger);
    eventLogger.addAppender(avroAppender);
    eventLogger.setLevel(Level.ALL);

    final StructuredDataMessage msg = new StructuredDataMessage("Transfer",
            "Success", "Audit");
    msg.put("memo", "This is a memo");
    msg.put("acct", "12345");
    msg.put("amount", "100.00");
    ThreadContext.put("id", UUID.randomUUID().toString());
    ThreadContext.put("memo", null);
    ThreadContext.put("test", "123");

    EventLogger.logEvent(msg);

    final Transaction transaction = channel.getTransaction();
    transaction.begin();

    final Event event = channel.take();
    Assert.assertNotNull(event);
    Assert.assertTrue("Channel contained event, but not expected message", getBody(event).endsWith("Success"));
    transaction.commit();
    transaction.close();

    eventSource.stop();
    eventLogger.removeAppender(avroAppender);
    avroAppender.stop();
}
 
源代码20 项目: logging-log4j2   文件: FlumeEmbeddedAgentTest.java
@Test
public void testLog4Event() throws IOException {

    final StructuredDataMessage msg = new StructuredDataMessage("Test", "Test Log4j", "Test");
    EventLogger.logEvent(msg);

    final Event event = primary.poll();
    Assert.assertNotNull(event);
    final String body = getBody(event);
    Assert.assertTrue("Channel contained event, but not expected message. Received: " + body,
        body.endsWith("Test Log4j"));
}
 
源代码21 项目: logging-log4j2   文件: FlumePersistentPerf.java
@Test
public void testPerformance() throws Exception {
    final long start = System.currentTimeMillis();
    final int count = 10000;
    for (int i = 0; i < count; ++i) {
        final StructuredDataMessage msg = new StructuredDataMessage("Test", "Test Primary " + i, "Test");
        msg.put("counter", Integer.toString(i));
        EventLogger.logEvent(msg);
    }
    final long elapsed = System.currentTimeMillis() - start;
    System.out.println("Time to log " + count + " events " + elapsed + "ms");
}
 
源代码22 项目: logging-log4j2   文件: FlumeEmbeddedAppenderTest.java
@Test
public void testLog4Event() throws IOException {

    final StructuredDataMessage msg = new StructuredDataMessage("Test", "Test Log4j", "Test");
    EventLogger.logEvent(msg);

    final Event event = primary.poll();
    Assert.assertNotNull("Event should not be null", event);
    final String body = getBody(event);
    Assert.assertTrue("Channel contained event, but not expected message. Received: " + body,
        body.endsWith("Test Log4j"));
}
 
源代码23 项目: logging-log4j2   文件: FlumeEmbeddedAppenderTest.java
@Test
@Ignore
public void testHeaderAddedByInterceptor() {

    final StructuredDataMessage msg = new StructuredDataMessage("Test", "Test Log4j", "Test");
    EventLogger.logEvent(msg);

    final Event event = primary.poll();
    Assert.assertNotNull("Event should not be null", event);
    final String environmentHeader = event.getHeaders().get("environment");
    Assert.assertEquals("local", environmentHeader);
}
 
源代码24 项目: logging-log4j2   文件: FlumeEmbeddedAppenderTest.java
@Test
@Ignore
public void testPerformance() throws Exception {
    final long start = System.currentTimeMillis();
    final int count = 10000;
    for (int i = 0; i < count; ++i) {
        final StructuredDataMessage msg = new StructuredDataMessage("Test", "Test Primary " + i, "Test");
        msg.put("counter", Integer.toString(i));
        EventLogger.logEvent(msg);
    }
    final long elapsed = System.currentTimeMillis() - start;
    System.out.println("Time to log " + count + " events " + elapsed + "ms");
}
 
@Test
public void testLog4Event() throws IOException {

    final StructuredDataMessage msg = new StructuredDataMessage("Test", "Test Log4j", "Test");
    EventLogger.logEvent(msg);

    final Event event = primary.poll();
    Assert.assertNotNull(event);
    final String body = getBody(event);
    Assert.assertTrue("Channel contained event, but not expected message. Received: " + body,
        body.endsWith("Test Log4j"));
}
 
@Test
public void testRFC5424Layout() throws IOException {

    final StructuredDataMessage msg = new StructuredDataMessage("Test", "Test Log4j", "Test");
    EventLogger.logEvent(msg);

    final Event event = primary.poll();
    Assert.assertNotNull(event);
    final String body = getBody(event);
    Assert.assertTrue("Structured message does not contain @EID: " + body,
        body.contains("[email protected]"));
}
 
@Override
public void run() {
    for (int i = start; i < stop; ++i) {
        final StructuredDataMessage msg = new StructuredDataMessage(
            "Test", "Test Multiple " + i, "Test");
        msg.put("counter", Integer.toString(i));
        EventLogger.logEvent(msg);
    }
}
 
源代码28 项目: logging-log4j2   文件: LogEventFactory.java
@SuppressWarnings("unchecked")
public static <T extends AuditEvent> T getEvent(final Class<T> intrface) {

    final String eventId = NamingUtils.lowerFirst(intrface.getSimpleName());
    final StructuredDataMessage msg = new StructuredDataMessage(eventId, null, "Audit");
    return (T)Proxy.newProxyInstance(intrface
        .getClassLoader(), new Class<?>[]{intrface}, new AuditProxy(msg, intrface));
}
 
源代码29 项目: logging-log4j2   文件: StructuredDataLookup.java
/**
 * Looks up the value for the key using the data in the LogEvent.
 * @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) {
    if (event == null || !(event.getMessage() instanceof StructuredDataMessage)) {
        return null;
    }
    final StructuredDataMessage msg = (StructuredDataMessage) event.getMessage();
    if (key.equalsIgnoreCase("id")) {
        return msg.getId().getName();
    } else if (key.equalsIgnoreCase("type")) {
        return msg.getType();
    }
    return msg.get(key);
}
 
源代码30 项目: logging-log4j2   文件: StructuredDataFilter.java
@Override
public Result filter(final Logger logger, final Level level, final Marker marker, final Message msg,
                     final Throwable t) {
    if (msg instanceof StructuredDataMessage) {
        return filter((StructuredDataMessage) msg);
    }
    return Result.NEUTRAL;
}
 
 类所在包
 类方法
 同包方法