Guillermo Grandes (JIRA) schrieb:
[ http://issues.apache.org/jira/browse/JAMES-601?page=all ]Guillermo Grandes updated JAMES-601: ------------------------------------ Attachment: James-final-20060923.diff Attach final version of the Patch "James-final-20060923.diff", other diffs are old... go to Trash ;-)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-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 :-)
The Patch seems to be ok i just not like the catch (Exception e) stuff. IMHO thats a bad practice.
bye Norman --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
