add exception logging
authorDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Tue, 13 May 2008 22:19:20 +0000 (22:19 +0000)
committerDavid ‘Bombe’ Roden <bombe@pterodactylus.net>
Tue, 13 May 2008 22:19:20 +0000 (22:19 +0000)
git-svn-id: http://trooper/svn/projects/jSite/trunk@870 c3eda9e8-030b-0410-8277-bc7414b0a119

src/net/pterodactylus/util/logging/Logging.java

index fe2fb54..ef8bb6a 100644 (file)
@@ -91,10 +91,29 @@ public class Logging {
                        @Override
                        public synchronized String format(LogRecord record) {
                                recordBuffer.setLength(0);
-                               recordBuffer.append(dateFormatter.format(new Date(record.getMillis()))).append(' ').append(record.getLevel().getName()).append(' ');
-                               recordBuffer.append(record.getSourceClassName()).append('.').append(record.getSourceMethodName()).append(' ');
-                               recordBuffer.append(record.getMessage());
-                               recordBuffer.append("\r\n");
+                               String linePrefix = dateFormatter.format(new Date(record.getMillis())) + " [" + record.getLevel() + "] [" + Thread.currentThread().getName() + "] [" + record.getSourceClassName() + "." + record.getSourceMethodName() + "] ";
+                               recordBuffer.append(linePrefix).append(record.getMessage()).append('\n');
+                               if (record.getThrown() != null) {
+                                       Throwable throwable = record.getThrown();
+                                       boolean causedBy = false;
+                                       while (throwable != null) {
+                                               recordBuffer.append(linePrefix);
+                                               if (causedBy) {
+                                                       recordBuffer.append("caused by: ");
+                                               }
+                                               recordBuffer.append(throwable.getClass().getName());
+                                               if (throwable.getMessage() != null) {
+                                                       recordBuffer.append(": ").append(throwable.getMessage());
+                                               }
+                                               recordBuffer.append("\n");
+                                               StackTraceElement[] stackTraceElements = throwable.getStackTrace();
+                                               for (StackTraceElement stackTraceElement: stackTraceElements) {
+                                                       recordBuffer.append(linePrefix).append("  at ").append(stackTraceElement.getClassName()).append('.').append(stackTraceElement.getMethodName()).append("(").append(stackTraceElement.getFileName()).append(':').append(stackTraceElement.getLineNumber()).append(')').append("\n");
+                                               }
+                                               throwable = throwable.getCause();
+                                               causedBy = true;
+                                       }
+                               }
                                return recordBuffer.toString();
                        }
                });