MAILBOX-376 Structured logging for groups retries
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/c70c9871 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/c70c9871 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/c70c9871 Branch: refs/heads/master Commit: c70c9871d3033ebacba87d104c52e2976910ae1d Parents: 406abf3 Author: Benoit Tellier <btell...@linagora.com> Authored: Wed Jan 23 12:01:24 2019 +0700 Committer: Benoit Tellier <btell...@linagora.com> Committed: Wed Jan 23 17:40:01 2019 +0700 ---------------------------------------------------------------------- .../apache/james/mailbox/events/EventBus.java | 7 +++++++ .../james/mailbox/events/GroupConsumerRetry.java | 19 ++++++++++++++----- 2 files changed, 21 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/c70c9871/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 6b25f1b..9a8987a 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 @@ -29,6 +29,13 @@ import com.google.common.collect.ImmutableSet; import reactor.core.publisher.Mono; public interface EventBus { + interface StructuredLoggingFields { + String EVENT_ID = "eventId"; + String EVENT_CLASS = "eventClass"; + String USER = "user"; + String GROUP = "group"; + } + Registration register(MailboxListener listener, RegistrationKey key); Registration register(MailboxListener listener, Group group) throws GroupAlreadyRegistered; http://git-wip-us.apache.org/repos/asf/james-project/blob/c70c9871/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupConsumerRetry.java ---------------------------------------------------------------------- diff --git a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupConsumerRetry.java b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupConsumerRetry.java index e789465..12469b9 100644 --- a/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupConsumerRetry.java +++ b/mailbox/event/event-rabbitmq/src/main/java/org/apache/james/mailbox/events/GroupConsumerRetry.java @@ -26,6 +26,8 @@ import static org.apache.james.mailbox.events.GroupRegistration.RETRY_COUNT; import static org.apache.james.mailbox.events.RabbitMQEventBus.MAILBOX_EVENT; import org.apache.james.mailbox.Event; +import org.apache.james.util.MDCStructuredLogger; +import org.apache.james.util.StructuredLogger; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,6 +44,7 @@ import reactor.rabbitmq.OutboundMessage; import reactor.rabbitmq.Sender; class GroupConsumerRetry { + static class RetryExchangeName { static RetryExchangeName of(Group group) { return new RetryExchangeName(group.asString()); @@ -90,8 +93,7 @@ class GroupConsumerRetry { } Mono<Void> handleRetry(byte[] eventAsBytes, Event event, int currentRetryCount, Throwable throwable) { - LOGGER.error("Exception happens when handling event {} of user {}", - event.getEventId().getId().toString(), event.getUser().asString(), throwable); + createStructuredLogger(event).log(logger -> logger.error("Exception happens when handling event after {} retries", currentRetryCount, throwable)); return retryOrStoreToDeadLetter(event, eventAsBytes, currentRetryCount); } @@ -113,8 +115,15 @@ class GroupConsumerRetry { eventAsByte)); return sender.send(retryMessage) - .doOnError(throwable -> LOGGER.error("Exception happens when publishing event of user {} to retry exchange," + - "this event will be lost forever", - event.getUser().asString(), throwable)); + .doOnError(throwable -> createStructuredLogger(event).log(logger -> logger.error("Exception happens when publishing event to retry exchange," + + "this event will be lost forever", throwable))); + } + + private StructuredLogger createStructuredLogger(Event event) { + 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.GROUP, group.asString()); } } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org