package org.erlide.common.util; import java.io.PrintStream; import java.text.MessageFormat; /** * @author Jeeeyul 2011. 11. 1. */ public class DebugStream extends PrintStream { private static final DebugStream INSTANCE = new DebugStream(); public static void activate() { System.setOut(INSTANCE); } private DebugStream() { super(System.out); } @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 = Thread.currentThread().getStackTrace()[3]; if (element.getClassName().equals( "org.eclipse.xtext.xbase.lib.InputOutput")) { // xtend println element = Thread.currentThread().getStackTrace()[4]; } super.print(MessageFormat.format("({0}:{1, number,#}) : ", element.getFileName(), element.getLineNumber())); } }