package org.erlide.util; import java.io.PrintStream; import java.io.UnsupportedEncodingException; import java.text.MessageFormat; /** * @author Jeeeyul 2011. 11. 1. */ public final class DebugStream extends PrintStream { private static DebugStream INSTANCE; public static void activate() { if (INSTANCE == null) { try { final DebugStream stream = new DebugStream(); System.setOut(stream); INSTANCE = stream; } catch (final UnsupportedEncodingException e) { e.printStackTrace(); } } } private DebugStream() throws UnsupportedEncodingException { super(System.out, true, "UTF-8"); } @Override public void println(final Object x) { showLocation(); super.println(x); } @Override public void println(final String x) { showLocation(); super.println(x); } private void showLocation() { StackTraceElement element = new Throwable().getStackTrace()[2]; if (element.getFileName().equals("InputOutput.java")) { element = new Throwable().getStackTrace()[3]; } super.print(MessageFormat.format("({0}:{1, number,#}) : ", element.getFileName(), element.getLineNumber())); } }