Tip 31. What's the difference between the two: System.err. and
System.out? When should we use System.err?
Answer 1: System.out leads the output to the standard output stream (normally
mapped to your console screen), System.err leads the output to the standard error
stream (by default the console, too).
The standard output should be used for regular program output, the standard error
for error messages. If you start your console program regularly both message types
will appear on your screen.
But you may redirect both streams to different destinations (e.g. files), e.g. if you
want to create an error log file where you don't want to be the regular output in.
On an UNIX you may redirect the output as follows:
java yourprog.class >output.log 2>error.log
this causes your regular output (using System.out) to be stored in
output.log and your error messages (using System.err) to be stored in error.log
Answer 2: System.err is a "special" pipe that usually is directed to the standard
console. You can redirect the System.out with the normal pipe control (| or >), but
System.err no. If you want to put
both the "normal" output and the "error" output to a file you must use the special
redirect 2>.
This allow you to send normal messages into a file or in the /null
black hole, but still receive the error messages on the console.