...
//Save default stdout and change stdout to be written to a buffer instead of console
PrintStream defaultOut = System.out;
ByteArrayOutputStream buffer = changeSystemOutputStream();
try {
//Do Stuff that would write to stdout
}
finally{
//Change stdout back to default and write the log messages to file
revertSystemOutputStream(buffer, defaultOut);
}
...
ByteArrayOutputStream changeSystemOutputStream(){
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
System.setOut(new PrintStream(buffer));
return buffer;
}
void revertSystemOutputStream(ByteArrayOutputStream buffer, PrintStream defaultOut ) {
System.setOut(defaultOut);
writeToFile(buffer.toString());
}