Не вызывайте System.setOut (), а просто сделайте два вызова для печати.Это не очень элегантно, но вы могли бы сделать метод, который выводит на оба.
PrintStream orgStdout = null;
PrintStream fileStdout = null;
orgStdout = System.out;
try {
fileStdout = new PrintStream(new FileOutputStream("C:\\testlogger.txt"));
System.out.println("==============");
for (int i = 0; i < 10; i++){
System.out.println("" + i);
fileStdout.println("" + i);
}
System.out.println("==============");
fileStdout.println("" + i);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Если вы работаете в Unix-боксе, вы также можете использовать команду tee
, пока все напечатанона стандартный выводВы запускаете свою программу так:
java MyClass | tee testlogger.txt
Затем все, что выводится на стандартный вывод, отправляется как в файл, так и в консоль.