package betsy.common.util; import java.io.ByteArrayOutputStream; import java.io.PrintStream; import org.apache.log4j.Logger; public class IOCapture { private static final Logger LOGGER = Logger.getLogger(IOCapture.class); public static void captureIO(Runnable closure) { //stdout ByteArrayOutputStream bufOut = new ByteArrayOutputStream(); PrintStream newOut = new PrintStream(bufOut); PrintStream saveOut = System.out; //stderr ByteArrayOutputStream bufErr = new ByteArrayOutputStream(); PrintStream newErr = new PrintStream(bufErr); PrintStream saveOErr = System.err; // capture stdout and stderr System.setOut(newOut); System.setErr(newErr); try { closure.run(); } finally { System.setOut(saveOut); System.setErr(saveOErr); } LOGGER.trace("System.out Output:\n\n" + bufOut); LOGGER.trace("System.err Output:\n\n" + bufErr); } }