You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/01/23 10:41:24 UTC

[08/13] james-project git commit: MAILBOX-376 Structured logging for groups retries

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 <bt...@linagora.com>
Authored: Wed Jan 23 12:01:24 2019 +0700
Committer: Benoit Tellier <bt...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org