Redirecting Standard Output, and Error

This example replaces standard output and error with a print stream that copies its output to both the console and to a file.
// All writes to this print stream are copied to two print streams public class TeeStream extends PrintStream { PrintStream out; public TeeStream(PrintStream out1, PrintStream out2) { super(out1); this.out = out2; } public void write(byte buf[], int off, int len) { try { super.write(buf, off, len); out.write(buf, off, len); } catch (Exception e) { } } public void flush() { super.flush(); out.flush(); } }
Here's an example that uses the class:
try { // Tee standard output PrintStream out = new PrintStream(new FileOutputStream("out.log")); PrintStream tee = new TeeStream(System.out, out); System.setOut(tee); // Tee standard error PrintStream err = new PrintStream(new FileOutputStream("err.log")); tee = new TeeStream(System.err, err); System.setErr(tee); } catch (FileNotFoundException e) { } // Write to standard output and error and the log files System.out.println("welcome"); System.err.println("error");

Post a comment

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image. Ignore spaces and be careful about upper and lower case.