* Sets up logging.
*
* @author David ‘Bombe’ Roden <bombe@freenetproject.org>
- * @version $Id$
*/
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(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();
}
});
*
* @see LoggingListener
* @author David ‘Bombe’ Roden <bombe@freenetproject.org>
- * @version $Id$
*/
private static class LogHandler extends Handler {