Replace standard output and error with a print stream, output to both the console and to a file.
import java.io.FileOutputStream;
import java.io.PrintStream;
public class Main {
public static void main(String[] argv) throws Exception {
System.setOut(new LogStream(System.out, new PrintStream(new FileOutputStream("out.log"))));
System.setErr(new LogStream(System.err, new PrintStream(new FileOutputStream("err.log"))));
System.out.println("output");
System.err.println("error");
}
}
class LogStream extends PrintStream {
PrintStream out;
public LogStream(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();
}
}
Related examples in the same category