X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Futil%2Flogging%2FLogging.java;h=cec0b7eb9a6ea8e0fe170f2ed0e857c8351ea7ae;hb=2e719ee43cf1b21c9445c67a0707e8373d77ee66;hp=9b25ff30d20a127966c6d8ae0ee2e579874560e6;hpb=1a15797202b29b63a0677041c437bb0dcb559e54;p=jSite2.git diff --git a/src/net/pterodactylus/util/logging/Logging.java b/src/net/pterodactylus/util/logging/Logging.java index 9b25ff3..cec0b7e 100644 --- a/src/net/pterodactylus/util/logging/Logging.java +++ b/src/net/pterodactylus/util/logging/Logging.java @@ -19,6 +19,8 @@ package net.pterodactylus.util.logging; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; import java.util.Date; @@ -32,9 +34,8 @@ import java.util.logging.Logger; /** * Sets up logging. - * + * * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - * @version $Id$ */ public class Logging { @@ -50,7 +51,7 @@ public class Logging { /** * Adds a listener to the log handler. - * + * * @param loggingListener * The listener to add */ @@ -60,7 +61,7 @@ public class Logging { /** * Removes a listener from the log handler. - * + * * @param loggingListener * The listener to remove */ @@ -70,7 +71,7 @@ public class Logging { /** * Sets up logging and installs the log handler. - * + * * @param hierarchyName * The name of the hierarchy root logger */ @@ -81,17 +82,39 @@ public class Logging { Handler consoleHandler = new ConsoleHandler(); consoleHandler.setLevel(Level.ALL); consoleHandler.setFormatter(new Formatter() { + private StringBuffer recordBuffer = new StringBuffer(); + private DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS Z"); + /** * {@inheritDoc} */ @Override public synchronized String format(LogRecord record) { recordBuffer.setLength(0); - recordBuffer.append(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(); } }); @@ -102,7 +125,7 @@ public class Logging { /** * Returns a named logger from the jSite hierarchy. - * + * * @param name * The name of the logger * @return The logger @@ -115,10 +138,9 @@ public class Logging { /** * The log handler simply forwards every log message it receives to all * registered listeners. - * + * * @see LoggingListener * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - * @version $Id$ */ private static class LogHandler extends Handler { @@ -138,7 +160,7 @@ public class Logging { /** * Adds a listener to the log handler. - * + * * @param loggingListener * The listener to add */ @@ -148,7 +170,7 @@ public class Logging { /** * Removes a listener from the log handler. - * + * * @param loggingListener * The listener to remove */ @@ -158,12 +180,12 @@ public class Logging { /** * Notifies all listeners that a log record was received. - * + * * @param logRecord * The received log record */ private void fireLogged(LogRecord logRecord) { - for (LoggingListener loggingListener: loggingListeners) { + for (LoggingListener loggingListener : loggingListeners) { loggingListener.logged(logRecord); } }