I have a large program in which I have used System.out for debugging. But I'd like to be able to log all System.out simultaneously to a file so even if my program isn't run in the console all the System.out will be written to a file and I will be able to see it in any moment the program is running or later.
Btw, it's not wise to crawl all the program and use a logger instead of System.out statements!
I tried java -jar myjar.jar > sysout.txt
but it doesn't log the exceptions logged by java logger utility.
What about System.setOut(PrintStream)
? You could insert this call in the initialization part of your program (start-up).
Was previously a commment:
And of course you can do the same with System.err - namely System.setErr(PrintStream), but better to a different file stream.
In detail assuming an autoflushing appending and buffered file stream:
String file = ...;
PrintStream ps =
new PrintStream(true, new BufferedOutputStream(new FileOutputStream(file, true)));
System.setOut(ps);
The normal redirection command_name args > output
only redirect Standard Output. It does not redirect Standard Error stream, where usually the errors are logged in. To output both streams to the same file use,
command args &> filename
eg. java -jar myjar.jar &> sysout.txt
To redirect to different files, use
command args 1> output_file 2> error_file
eg. java -jar myjar.jar 1> sysout.txt 2> errout.txt
See more options at http://www.tldp.org/LDP/abs/html/io-redirection.html
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.