MAILBOX-376 Structured logging for event dispatching
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/a25a1c66 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/a25a1c66 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/a25a1c66 Branch: refs/heads/master Commit: a25a1c66c0ce96aa3840e7a987cdd6920e9f0a2c Parents: e3072f2 Author: Benoit Tellier <[email protected]> Authored: Wed Jan 23 14:38:21 2019 +0700 Committer: Benoit Tellier <[email protected]> Committed: Wed Jan 23 17:40:01 2019 +0700 ---------------------------------------------------------------------- .../java/org/apache/james/mailbox/events/EventBus.java | 1 + .../apache/james/mailbox/events/EventDispatcher.java | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/a25a1c66/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventBus.java ---------------------------------------------------------------------- diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventBus.java b/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventBus.java index 9a8987a..b05db0f 100644 --- a/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventBus.java +++ b/mailbox/api/src/main/java/org/apache/james/mailbox/events/EventBus.java @@ -34,6 +34,7 @@ public interface EventBus { String EVENT_CLASS = "eventClass"; String USER = "user"; String GROUP = "group"; + String REGISTRATION_KEYS = "registrationKeys"; } Registration register(MailboxListener listener, RegistrationKey key); http://git-wip-us.apache.org/repos/asf/james-project/blob/a25a1c66/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/EventDispatcher.java ---------------------------------------------------------------------- diff --git a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/EventDispatcher.java b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/EventDispatcher.java index 01ea139..42b32d7 100644 --- a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/EventDispatcher.java +++ b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/EventDispatcher.java @@ -30,6 +30,8 @@ import java.util.Set; import org.apache.james.event.json.EventSerializer; import org.apache.james.mailbox.Event; import org.apache.james.mailbox.MailboxListener; +import org.apache.james.util.MDCStructuredLogger; +import org.apache.james.util.StructuredLogger; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -75,7 +77,8 @@ class EventDispatcher { .flatMap(mailboxListenerRegistry::getLocalMailboxListeners) .filter(mailboxListener -> mailboxListener.getExecutionMode().equals(MailboxListener.ExecutionMode.SYNCHRONOUS)) .flatMap(mailboxListener -> Mono.fromRunnable(Throwing.runnable(() -> mailboxListener.event(event))) - .doOnError(e -> LOGGER.error("Exception happens when handling event of user {}", event.getUser().asString(), e)) + .doOnError(e -> structuredLogger(event, keys) + .log(logger -> logger.error("Exception happens when dispatching event of user {}", event.getUser().asString(), e))) .onErrorResume(e -> Mono.empty())) .then(); @@ -90,6 +93,14 @@ class EventDispatcher { .subscribeWith(MonoProcessor.create()); } + private StructuredLogger structuredLogger(Event event, Set<RegistrationKey> keys) { + return MDCStructuredLogger.forLogger(LOGGER) + .addField(EventBus.StructuredLoggingFields.EVENT_ID, event.getEventId()) + .addField(EventBus.StructuredLoggingFields.EVENT_CLASS, event.getClass()) + .addField(EventBus.StructuredLoggingFields.USER, event.getUser()) + .addField(EventBus.StructuredLoggingFields.REGISTRATION_KEYS, keys); + } + private Mono<Void> doDispatch(Mono<byte[]> serializedEvent, Set<RegistrationKey> keys) { Flux<RoutingKeyConverter.RoutingKey> routingKeys = Flux.concat( Mono.just(RoutingKeyConverter.RoutingKey.empty()), --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
