package stacktrace; import java.io.PrintStream; import java.text.MessageFormat; public class ObtainAndPrint extends PrintStream { public ObtainAndPrint(PrintStream out) { super(out); } @Override public void println(Object x) { prependLineInformation(); super.println(x); } @Override public void println(String x) { prependLineInformation(); super.println(x); } private void prependLineInformation() { StackTraceElement element = Thread.currentThread().getStackTrace()[3]; super.print(MessageFormat.format("({0}:{1, number,#}): ", element.getFileName(), element.getLineNumber())); } }