Scarab commit: svn commit: r10931 - trunk/src: conf/conf java/org/tigris/scarab/services/email

Hussayn Dabbous <[email protected]>
Newsgroups gmane.comp.java.scarab.cvs
Message-ID <[email protected]>
Author: dabbous
Date: 2010-02-27 15:14:19-0800
New Revision: 10931

Modified:
   trunk/src/conf/conf/log4j.properties
   trunk/src/java/org/tigris/scarab/services/email/TemplateHtmlEmail.java

Log:
Added email logging (for sent and unsent emails)
Added a new logger "email.log" which creates the file target/scarab/logs/email.log

optimized log entries for notifications.log

By default now all sent and all failed emails are reported into email.log

Modified: trunk/src/conf/conf/log4j.properties
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/conf/conf/log4j.properties?view=diff&pathrev=10931&r1=10930&r2=10931
==============================================================================
--- trunk/src/conf/conf/log4j.properties	(original)
+++ trunk/src/conf/conf/log4j.properties	2010-02-27 15:14:19-0800
@@ -52,6 +52,15 @@
 log4j.appender.notification.layout.conversionPattern = %d [%t] %-5p %c - %m%n
 log4j.appender.notification.append = true
 
+# The email appender is used by EMail subsystem to log outgoing Emails
+
+log4j.category.email.log   = INFO, emaillogger
+log4j.appender.emaillogger = org.apache.log4j.FileAppender
+log4j.appender.emaillogger.file = ${applicationRoot}/logs/email.log
+log4j.appender.emaillogger.layout = org.apache.log4j.PatternLayout
+log4j.appender.emaillogger.layout.conversionPattern = %d %-5p - %m%n
+log4j.appender.emaillogger.append = true
+
 # This category is used by Turbine.
 
 log4j.category.org.apache.turbine = INFO, turbine

Modified: trunk/src/java/org/tigris/scarab/services/email/TemplateHtmlEmail.java
Url: http://scarab.tigris.org/source/browse/scarab/trunk/src/java/org/tigris/scarab/services/email/TemplateHtmlEmail.java?view=diff&pathrev=10931&r1=10930&r2=10931
==============================================================================
--- trunk/src/java/org/tigris/scarab/services/email/TemplateHtmlEmail.java	(original)
+++ trunk/src/java/org/tigris/scarab/services/email/TemplateHtmlEmail.java	2010-02-27 15:14:19-0800
@@ -57,8 +57,10 @@
 import java.io.StringWriter;
 import java.net.URL;
 import java.util.Hashtable;
+import java.util.Iterator;
 
 import javax.mail.MessagingException;
+import javax.mail.internet.InternetAddress;
 
 import org.apache.commons.mail.HtmlEmail;
 import org.apache.commons.mail.EmailException;
@@ -70,6 +72,7 @@
 import org.apache.fulcrum.template.TurbineTemplate;
 import org.apache.log4j.Logger;
 
+import org.tigris.scarab.om.Issue;
 import org.tigris.scarab.services.email.VelocityEmail;
 import org.tigris.scarab.tools.ScarabLocalizationTool;
 import org.tigris.scarab.util.Email;
@@ -140,7 +143,8 @@
     /** The map of embedded files. */
     private Hashtable embmap = null;
 
-    public static Logger log = Log.get(Email.class.getName());
+    public  static Logger log      = Log.get(Email.class.getName());
+    private static Logger emailLog = Log.get("email.log");
     
     /**
      * Constructor, sets the TemplateContext object.
@@ -305,9 +309,11 @@
         try
         {
             mimeMessageId = super.send();
+            logSend();
         }
         catch( Exception e)
         {
+            
             dumpContextToLog(e);
             throw new EmailException("Cannot send email template", e);
         }
@@ -315,9 +321,59 @@
         return mimeMessageId;
     }
 
+    private void logSend()
+    {
+        InternetAddress from = this.getFromAddress();
+        Iterator<InternetAddress> toIter = this.toList.iterator();
+        while(toIter.hasNext())
+        {
+            InternetAddress to = toIter.next();
+            emailLog.info("from:"+from.getAddress() + " - to:"+to.getAddress() + " - OK");
+        }
+    }
+    
+    private void logFail(Exception e)
+    {
+        // Retrieve the IssueId if available:
+        Issue issue = (Issue) context.get("issue");
+        String issueId;
+        if( issue != null)
+        {
+            issueId = "issue:"+issue.getIdPrefix() + issue.getIdCount()+" ";
+        }
+        else
+        {
+            issueId = "";
+        }
+        
+        InternetAddress from = this.getFromAddress();
+        
+        Iterator<InternetAddress> toIter = this.toList.iterator();     
+        while(toIter.hasNext())
+        {
+            InternetAddress to = toIter.next();
+            emailLog.error(issueId + "from:"+from.getAddress() + " - to:"+to.getAddress() + " - FAIL (" + e.getMessage()+")");
+        }
+        
+        Iterator<InternetAddress> ccIter = this.ccList.iterator();        
+        while(ccIter.hasNext())
+        {
+            InternetAddress cc = ccIter.next();
+            emailLog.error(issueId + "from:"+from.getAddress() + " - to:"+cc.getAddress() + " - FAIL (" + e.getMessage()+")");
+        }
+        
+    }
+    
     private void dumpContextToLog(Exception e) 
     {
-        log.error("context dump after exception ["+ e.getMessage()+"]");
+        logFail(e);
+        log.info("context dump after exception ["+ e.getMessage()+"]");
+        log.info("From:" + this.fromAddress.getAddress());
+        InternetAddress to = (InternetAddress)this.toList.get(0);
+        if(to != null)
+        {
+            log.info("to:" + to.getAddress());
+        }
         String keystring=null;
         Object val = null;
         try
@@ -327,7 +383,7 @@
             {
                 keystring = keys[i].toString();
                 val = context.get(keystring);
-                log.error("    " + keystring + "=" + ((val==null)? "null (no value in context)":val.toString()) );                 
+                log.info("    " + keystring + "=" + ((val==null)? "null (no value in context)":val.toString()) );                 
             }
         }
         catch(Exception ex)
@@ -336,7 +392,7 @@
             log.error("key["+keystring+"]");
             log.error("val["+val+"]");
         }
-        log.error("End of Email context dump");
+        log.info("End of Email context dump");
     }
 
     /**

------------------------------------------------------
http://scarab.tigris.org/ds/viewMessage.do?dsForumId=3577&dsMessageId=2452988
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.