Update of /var/cvs/src/org/mmbase/framework
In directory james.mmbase.org:/tmp/cvs-serv8606/framework
Modified Files:
ErrorRenderer.java
Log Message:
some efforts to make the error-pages less absurdly verbose
See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/framework
Index: ErrorRenderer.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/framework/ErrorRenderer.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- ErrorRenderer.java 26 Sep 2008 15:40:00 -0000 1.17
+++ ErrorRenderer.java 2 Oct 2008 12:09:41 -0000 1.18
@@ -28,7 +28,7 @@
* share code.
*
* @author Michiel Meeuwissen
- * @version $Id: ErrorRenderer.java,v 1.17 2008/09/26 15:40:00 michiel Exp $
+ * @version $Id: ErrorRenderer.java,v 1.18 2008/10/02 12:09:41 michiel Exp $
* @since MMBase-1.9
*/
@@ -38,6 +38,8 @@
protected final Error error;
protected final String url;
+ protected static int MAX_CAUSES = 4;
+
public ErrorRenderer(Type t, Block parent, String u, int status, String m)
{
super(t, parent);
error = new Error(status, new Exception(m));
@@ -147,7 +149,11 @@
- public Writer getErrorReport(Writer msg, final HttpServletRequest
request, CharTransformer escape) throws IOException {
+ public Writer getErrorReport(Writer to, final HttpServletRequest
request, CharTransformer escape) throws IOException {
+ final Writer logMsg = new StringWriter();
+ final Writer tee = new org.mmbase.util.ChainedWriter(to,
logMsg);
+ Writer msg = tee;
+
LinkedList<Throwable> stack = getStack();
String ticket = new Date().toString();
@@ -165,7 +171,7 @@
Enumeration en2 = request.getAttributeNames();
while (en2.hasMoreElements()) {
String name = (String) en2.nextElement();
- msg.append(escape.transform(name+":
"+request.getAttribute(name)+"\n"));
+ msg.append(escape.transform(name + ": " +
request.getAttribute(name) + "\n"));
}
}
msg.append("\n");
@@ -190,27 +196,41 @@
msg.append(name).append(":
").append(escape.transform(request.getParameter(name))).append("\n");
}
}
- msg.append("\nException\n----------\n\n" + (exception != null ?
(escape.transform(exception.getClass().getName())) : "NO EXCEPTION") + ": ");
-
+ msg.append("\nException " + ticket + "\n----------\n\n" +
(exception != null ? (escape.transform(exception.getClass().getName())) : "NO
EXCEPTION") + ": ");
+ int wroteCauses = 0;
while (! stack.isEmpty()) {
Throwable t = stack.removeFirst();
// add stack stacktraces
if (t != null) {
+ if (stack.isEmpty()) { // write last message always
+ msg = tee;
+ }
String message = t.getMessage();
- msg.append(escape.transform(message)).append("\n");
-
msg.append(escape.transform(org.mmbase.util.logging.Logging.stackTrace(t)));
+ if (msg != tee) {
+ to.append("\n=== skipped(see log) : " +
escape.transform(t.getClass().getName()) + ": " + message + "\n");
+ }
+
+
msg.append("\n\n").append(escape.transform(t.getClass().getName() + ": " +
message));
+ StackTraceElement[] stackTrace = t.getStackTrace();
+ for (StackTraceElement e : stackTrace) {
+ msg.append("\n at
").append(escape.transform(e.toString()));
+ }
if (! stack.isEmpty()) {
msg.append("\n-------caused:\n");
}
+ wroteCauses++;
+ if (wroteCauses >= MAX_CAUSES ) {
+ msg = logMsg;
+ }
}
}
// write errors to mmbase log
if (status == 500) {
- log.error(ticket + ":\n" + msg);
+ log.error("TICKET " + ticket + ":\n" + logMsg);
}
- return msg;
+ return to;
}
}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs