Probably this thread is a duplicate but can someone guide? I want to write the java program output to console and file at the same time. I know that i can send output to console with this piece of code
PrintStream orgStdout = null;
PrintStream fileStdout = null;
orgStdout = System.out;
try {
fileStdout = new PrintStream(new FileOutputStream("C:\\testlogger.txt"));
System.setOut(fileStdout);
System.out.println("==============");
for (int i = 0; i < 10; i++){
System.out.println("" + i);
}
System.out.println("==============");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
but how to keep output on console and on file as well??
P.S: not looking for an option where i output in file and display it console in different thread.
Look for TeeOutputStream
from Apache Commons IO.
Don't call System.setOut(), and just make two calls to print. It's not very elegant, but you could make a method that outputs to both.
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();
}
If you're running on a unix box, you could also use the tee
command as long as everything is printed to stdout. You'd run your program like this:
java MyClass | tee testlogger.txt
Then everything printed to stdout goes to both the file and console.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With