[ 
http://issues.apache.org/jira/browse/JAMES-601?page=comments#action_12437420 ] 
            
Guillermo Grandes commented on JAMES-601:
-----------------------------------------

"Oops", logger is null

2006-09-25 03:20:06,659 ERROR [spoolmanager.root] Caused by nested exception: 
java.lang.NullPointerException
        at 
org.apache.james.transport.Loader$MailetContextWrapper.log(Loader.java:194)
        at org.apache.mailet.GenericMatcher.log(GenericMatcher.java:146)
        at 
org.apache.james.transport.matchers.AbstractNetworkMatcher.init(AbstractNetworkMatcher.java:90)
        at org.apache.mailet.GenericMatcher.init(GenericMatcher.java:116)
        at 
org.apache.james.transport.JamesMatcherLoader.getMatcher(JamesMatcherLoader.java:62)

You forgot... the logger in constructor... only the most important thing in the 
world (joke) ;-)

        public MailetContextWrapper(MailetContext mailetContext, Logger logger) 
{
            this.mailetContext = mailetContext;
+            this.logger = logger;
        }

With this, all is right :-)

> Add Class detail in logs of James.Mailet (patch)
> ------------------------------------------------
>
>                 Key: JAMES-601
>                 URL: http://issues.apache.org/jira/browse/JAMES-601
>             Project: James
>          Issue Type: Improvement
>          Components: Mailet API, James Core, Matchers/Mailets (bundled), 
> Remote Delivery, Mailet Contributions
>    Affects Versions: 2.3.0rc1
>         Environment: james 2.3.0rc1
>            Reporter: Guillermo Grandes
>         Attachments: JAMES-601.diff, James-final-20060923.diff, 
> James.java.diff, James.java.diff, JamesChildsLogger.java.diff
>
>
> In order to improve the organization and operation of logs I have thought 
> about this piece of code, without change Mailet API and that does not force 
> to make great changes in the Mailets.
> This code affects :
> http://svn.apache.org/viewvc/james/server/branches/v2.3/src/java/org/apache/james/James.java
> ==============================================
> /**
> * Return the logger for the Mailet API
> *
> * @return the logger for the Mailet API
> */
> private Logger getMailetLogger() {     // it replaces the original method
>     if (mailetLogger == null) {
>         mailetLogger = getLogger().getChildLogger("Mailet");
>     }
>     String p = findParentCaller();
>     return ((p == null) ? mailetLogger : mailetLogger.getChildLogger(p));
> }
> /**
> * Return the Caller Mailet
> *
> * @return the ClassName for the Caller Mailet / Matcher
> */
> private String findParentCaller() {    // it is a new method
>     try {
>         throw new Exception();
>     }
>     catch (Throwable t) {
>         StackTraceElement[] ste = t.getStackTrace();
>         int i;
>         boolean found = false;
>         for (i = 0; i < ste.length; i++) {
>             String cn = ste[i].getClassName();
>             if (cn.startsWith("sun") || cn.startsWith("java") || 
> cn.startsWith("$")) continue; // speed-up
>             if ((cn.equals("org.apache.mailet.GenericMailet")) ||
>                 (cn.equals("org.apache.mailet.GenericMatcher"))) {
>                 continue;
>             }
>             try {
>                 Class c = Class.forName(cn);
>                 if 
> ((org.apache.mailet.GenericMailet.class.isAssignableFrom(c)) ||
>                     
> (org.apache.mailet.GenericMatcher.class.isAssignableFrom(c))) {
>                     found = true; break;
>                 }
>             }
>             catch(Exception ign) {}
>         }
>         if (!found) return null;
>         try {
>             return ste[i].getClassName().replace("$", ".");
>         }
>         catch (Exception ign) {}
>         return null;
>     }
> }
> ==============================================
> The result of this patch is:
> Original Logs...
> INFO  [James.Mailet] ToRepository: Storing mail Mail1222222222222-0 in 
> file://var/mail/inbound/
> INFO  [James.Mailet] RemoteDelivery: Attempting delivery of 
> Mail1222222222222-0 to host 192.168.1.1 at 192.168.1.1 for addresses [EMAIL 
> PROTECTED]
> INFO  [James.Mailet] BayesianAnalysisFeeder: maxSize: 200000
> Improved Logs...
> INFO  [James.Mailet.org.apache.james.transport.mailets.ToRepository] 
> ToRepository: Storing mail Mail1222222222222-0 in file://var/mail/inbound/
> INFO  [James.Mailet.org.apache.james.transport.mailets.RemoteDelivery] 
> RemoteDelivery: Attempting delivery of Mail1222222222222-0 to host 
> 192.168.1.1 at 192.168.1.1 for addresses [EMAIL PROTECTED]
> INFO  
> [James.Mailet.org.apache.james.transport.mailets.BayesianAnalysisFeeder] 
> BayesianAnalysisFeeder: maxSize: 200000
> With this you can organize your logs by Mailet / Category in environment.xml 
> :-)

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to