app/src/main/java/org/sakaiproject/nakamura/app/NakamuraMain.java
private static void log(PrintStream out, String prefix, String message,
			Throwable t) {

		final StringBuilder linePrefixBuilder = new StringBuilder();
		synchronized (fmt) {
			linePrefixBuilder.append(fmt.format(new Date()));
		}
		linePrefixBuilder.append(prefix);
		linePrefixBuilder.append(" [");
		linePrefixBuilder.append(Thread.currentThread().getName());
		linePrefixBuilder.append("] ");
		final String linePrefix = linePrefixBuilder.toString();

		out.print(linePrefix);
		out.println(message);
		if (t != null) {
			t.printStackTrace(new PrintStream(out) {
				@Override
				public void println(String x) {
					synchronized (this) {
						print(linePrefix);
						super.println(x);
						flush();
					}
				}
			});
		}
	}
private static void log(PrintStream out, String prefix, String message,
			Throwable t) {

		final StringBuilder linePrefixBuilder = new StringBuilder();
		synchronized (fmt) {
			linePrefixBuilder.append(fmt.format(new Date()));
		}
		linePrefixBuilder.append(prefix);
		linePrefixBuilder.append(" [");
		linePrefixBuilder.append(Thread.currentThread().getName());
		linePrefixBuilder.append("] ");
		final String linePrefix = linePrefixBuilder.toString();

		out.print(linePrefix);
		out.println(message);
		if (t != null) {
			t.printStackTrace(new PrintStream(out) {
				@Override
				public void println(String x) {
					synchronized (this) {
						print(linePrefix);
						super.println(x);
						flush();
					}
				}
			});
		}
	}
the throwable if not-null is also prefixed line by line with the prefix