private static void appendln(Object O, Appendable out) { appendln(O==null ? "null" : O.toString(), out); }
private static void printMessage(Appendable out, int indent, String label, String message) { for(int c=0;c<indent;c++) append(' ', out); append(label, out); if(message==null) { appendln("null", out); } else { message=message.trim(); int messageLen=message.length(); for(int c=0;c<messageLen;c++) { char ch=message.charAt(c); if(ch=='\n') { int lineIndent=indent+label.length(); appendln(out); for(int d=0;d<lineIndent;d++) append(' ', out); } else if(ch!='\r') append(ch, out); } appendln(out); } }
appendln(out); appendln("**************************", out); appendln("* BEGIN EXCEPTION REPORT *", out); appendln("**************************", out); appendln(out); appendln(" Time ", out); append(" ", out); try { appendln(new java.util.Date(System.currentTimeMillis()).toString(), out); } catch(Exception err) { append("Unable to display date: ", out); appendln(err.toString(), out); appendln(" Extra Information", out); for (Object ei : extraInfo) { append(" ", out); appendln(ei, out); appendln(" Threading", out); Thread thread=Thread.currentThread(); appendln(" Thread", out); append(" ID..........: ", out); appendln(Long.toString(thread.getId()), out); append(" Name........: ", out); appendln(thread.getName(), out); append(" Daemon......: ", out); appendln(Boolean.toString(thread.isDaemon()), out); append(" Class.......: ", out); appendln(thread.getClass().getName(), out); append(" Priority....: ", out);
private static void printThrowables(Throwable thrown, Appendable out, int indent, List<Throwable> closed) { for(int c=0;c<indent;c++) append(' ', out); appendln(thrown.getClass().getName(), out); printMessage(out, indent+4, "Message...........: ", thrown.getMessage()); printMessage(out, indent+4, "Localized Message.: ", thrown.getLocalizedMessage()); for(int c=0;c<(indent+4);c++) append(' ', out); append("SQL Error Code....: ", out); appendln(sql.getErrorCode(), out); for(int c=0;c<(indent+4);c++) append(' ', out); append("SQL State.........: ", out); appendln(sql.getSQLState(), out); } else if(thrown instanceof WrappedException) { WrappedException wrapped=(WrappedException)thrown; if(wrappedInfo!=null && wrappedInfo.length>0) { for(int c=0;c<(indent+4);c++) append(' ', out); appendln("Extra Information", out); for (Object wi : wrappedInfo) { for(int d=0;d<(indent+8);d++) append(' ', out); appendln(wi, out); for(int c=0;c<(indent+4);c++) append(' ', out); append("Permission........: ", out); appendln(permission, out); if(permission!=null) { for(int c=0;c<(indent+4);c++) append(' ', out); append("Permission Class..: ", out); appendln(permission.getClass().getName(), out);