01: package org.mmbase.util.logging.log4j;
02:
03: import org.apache.log4j.spi.LoggingEvent;
04:
05: /**
06: * This layout can be used in logging in order to print out a stacktrace
07: * for a given logging event. THis is a very expensive call, but can be
08: * very useful when trying to find application bugs. Using this layout
09: * you will see exactly which line of code (or which JSP) generated the
10: * exception.
11: * @author Johannes Verelst
12: * @version $Id: StacktraceLoggingPatternLayout.java,v 1.5 2008/02/03 17:33:58 nklasens Exp $
13: */
14: public class StacktraceLoggingPatternLayout extends MMPatternLayout {
15:
16: /**
17: * Overridden from PatternLayout; use the normal pattern to format
18: * the logevent, but also return the current stacktrace.
19: */
20: public String format(LoggingEvent event) {
21: String res = super .format(event);
22: Exception e = new Exception();
23: StackTraceElement[] ste = e.getStackTrace();
24: StringBuilder trace = new StringBuilder(res);
25: for (StackTraceElement element : ste) {
26: trace.append("\tat ").append(element.toString()).append(
27: "\n");
28: }
29: return trace.toString();
30: }
31: }
|