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