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 2017/08/24 03:46:37 UTC

[12/38] james-project git commit: JAMES-2114 Add MDC logging context for MAILET container

JAMES-2114 Add MDC logging context for MAILET container


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/b7bcfd96
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/b7bcfd96
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/b7bcfd96

Branch: refs/heads/master
Commit: b7bcfd964c4526fefde42dce65a4c5bf4a3fee05
Parents: 7600a6d
Author: benwa <bt...@linagora.com>
Authored: Mon Aug 14 16:30:17 2017 +0700
Committer: benwa <bt...@linagora.com>
Committed: Thu Aug 24 10:34:43 2017 +0700

----------------------------------------------------------------------
 .../mailet/base/MailetPipelineLogging.java      | 34 ++++----------------
 server/mailet/mailetcontainer-camel/pom.xml     |  4 +++
 .../impl/camel/CamelProcessor.java              | 16 ++++++++-
 .../impl/camel/MatcherSplitter.java             | 21 +++++++++++-
 4 files changed, 45 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/b7bcfd96/mailet/base/src/main/java/org/apache/mailet/base/MailetPipelineLogging.java
----------------------------------------------------------------------
diff --git a/mailet/base/src/main/java/org/apache/mailet/base/MailetPipelineLogging.java b/mailet/base/src/main/java/org/apache/mailet/base/MailetPipelineLogging.java
index 5b5ee9a..ec8d0ec 100644
--- a/mailet/base/src/main/java/org/apache/mailet/base/MailetPipelineLogging.java
+++ b/mailet/base/src/main/java/org/apache/mailet/base/MailetPipelineLogging.java
@@ -21,39 +21,17 @@ package org.apache.mailet.base;
 
 import org.apache.mailet.Mail;
 import org.apache.mailet.Mailet;
-import org.apache.mailet.MailetConfig;
-import org.apache.mailet.MailetContext;
 import org.slf4j.Logger;
-
-import com.google.common.base.Optional;
+import org.slf4j.LoggerFactory;
 
 public class MailetPipelineLogging {
+    private static final Logger LOGGER = LoggerFactory.getLogger(MailetPipelineLogging.class);
 
-    public static void logBeginOfMailetProcess(final Mailet mailet, final Mail mail) {
-        getLogger(mailet)
-        .transform(logger -> {
-            logger.debug("Entering mailet: {}\n\tmail state {}", mailet.getMailetInfo(), mail.getState());
-            return true;
-        });
-    }
-
-    public static void logEndOfMailetProcess(final Mailet mailet, final Mail mail) {
-        getLogger(mailet)
-            .transform(logger -> {
-                logger.debug("End of mailet: {}\n\tmail state {}", mailet.getMailetInfo(), mail.getState());
-                return true;
-            });
+    public static void logBeginOfMailetProcess(Mailet mailet, Mail mail) {
+        LOGGER.debug("Mail: {} Entering mailet: {}", mail.getState(), mailet.getMailetInfo());
     }
 
-    private static Optional<Logger> getLogger(Mailet mailet) {
-        MailetConfig mailetConfig = mailet.getMailetConfig();
-        if (mailetConfig == null) {
-            return Optional.absent();
-        }
-        MailetContext mailetContext = mailetConfig.getMailetContext();
-        if (mailetContext == null) {
-            return Optional.absent();
-        }
-        return Optional.fromNullable(mailetContext.getLogger());
+    public static void logEndOfMailetProcess(Mailet mailet, Mail mail) {
+        LOGGER.debug("Mail: {} End of mailet: {}", mail.getState(), mailet.getMailetInfo());
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/b7bcfd96/server/mailet/mailetcontainer-camel/pom.xml
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-camel/pom.xml b/server/mailet/mailetcontainer-camel/pom.xml
index 0d4c959..8b97319 100644
--- a/server/mailet/mailetcontainer-camel/pom.xml
+++ b/server/mailet/mailetcontainer-camel/pom.xml
@@ -67,6 +67,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.james</groupId>
+            <artifactId>james-server-util-java8</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.james</groupId>
             <artifactId>apache-mailet-api</artifactId>
         </dependency>
         <dependency>

http://git-wip-us.apache.org/repos/asf/james-project/blob/b7bcfd96/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/CamelProcessor.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/CamelProcessor.java b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/CamelProcessor.java
index 0f168ca..f21c940 100644
--- a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/CamelProcessor.java
+++ b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/CamelProcessor.java
@@ -18,6 +18,7 @@
  ****************************************************************/
 package org.apache.james.mailetcontainer.impl.camel;
 
+import java.io.Closeable;
 import java.util.List;
 import java.util.Locale;
 
@@ -30,12 +31,15 @@ import org.apache.james.mailetcontainer.impl.ProcessorUtil;
 import org.apache.james.mailetcontainer.lib.AbstractStateMailetProcessor.MailetProcessorListener;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.metrics.api.TimeMetric;
+import org.apache.james.util.MDCBuilder;
 import org.apache.mailet.Mail;
 import org.apache.mailet.Mailet;
 import org.apache.mailet.MailetConfig;
 import org.apache.mailet.base.MailetPipelineLogging;
 import org.slf4j.Logger;
 
+import com.google.common.collect.ImmutableList;
+
 /**
  * Mailet wrapper which execute a Mailet in a Processor
  */
@@ -67,7 +71,17 @@ public class CamelProcessor implements Processor {
         long start = System.currentTimeMillis();
         TimeMetric timeMetric = metricFactory.timer(mailet.getClass().getSimpleName());
         MessagingException ex = null;
-        try {
+        try (Closeable closeable =
+                 MDCBuilder.create()
+                     .addContext(MDCBuilder.PROTOCOL, "MAILET")
+                     .addContext(MDCBuilder.ACTION, "MAILET")
+                     .addContext(MDCBuilder.HOST, mail.getRemoteHost())
+                     .addContext("state", mail.getState())
+                     .addContext("mailet", mailet.getClass().getSimpleName())
+                     .addContext("mail", mail.getName())
+                     .addContext("recipients", ImmutableList.copyOf(mail.getRecipients()))
+                     .addContext("sender", mail.getSender())
+                     .build()) {
             MailetPipelineLogging.logBeginOfMailetProcess(mailet, mail);
             mailet.service(mail);
         } catch (MessagingException me) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/b7bcfd96/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/MatcherSplitter.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/MatcherSplitter.java b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/MatcherSplitter.java
index 2b34c4e..ff5b812 100644
--- a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/MatcherSplitter.java
+++ b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/MatcherSplitter.java
@@ -19,6 +19,8 @@
 
 package org.apache.james.mailetcontainer.impl.camel;
 
+import java.io.Closeable;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
@@ -35,11 +37,15 @@ import org.apache.james.mailetcontainer.impl.ProcessorUtil;
 import org.apache.james.mailetcontainer.lib.AbstractStateMailetProcessor.MailetProcessorListener;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.metrics.api.TimeMetric;
+import org.apache.james.util.MDCBuilder;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.Matcher;
 import org.slf4j.Logger;
 
+import com.google.common.base.Throwables;
+import com.google.common.collect.ImmutableList;
+
 /**
  * A Splitter for use with Camel to split the MailMessage into many pieces if
  * needed. This is done by use a Matcher.
@@ -90,7 +96,18 @@ public class MatcherSplitter {
             List<Mail> mails = new ArrayList<>();
             boolean fullMatch = false;
 
-            try {
+            try (Closeable closeable =
+                     MDCBuilder.create()
+                         .addContext(MDCBuilder.PROTOCOL, "MAILET")
+                         .addContext(MDCBuilder.ACTION, "MATCHER")
+                         .addContext(MDCBuilder.IP, mail.getRemoteAddr())
+                         .addContext(MDCBuilder.HOST, mail.getRemoteHost())
+                         .addContext("matcher", matcher.getMatcherInfo())
+                         .addContext("state", mail.getState())
+                         .addContext("mail", mail.getName())
+                         .addContext("recipients", ImmutableList.copyOf(mail.getRecipients()))
+                         .addContext("sender", mail.getSender())
+                         .build()) {
                 // call the matcher
                 matchedRcpts = matcher.match(mail);
 
@@ -120,6 +137,8 @@ public class MatcherSplitter {
                 } else {
                     ProcessorUtil.handleException(me, mail, matcher.getMatcherConfig().getMatcherName(), onMatchException, logger);
                 }
+            } catch (IOException e) {
+                throw Throwables.propagate(e);
             }
 
             // check if the matcher matched


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org