[
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]