Redirect standard error
To redirect standard error (or System.err) there's a method in the System class called setErr() which takes a PrintStream instance as argument. If we for example want to redirect all messages on System.err to a file, we can create a FileOutputStream instance and send it to the constructor of the PrintStream. This Java code example creates the FileOutputStream with the filename "standard_err.txt" and pass it to the PrintStream, which in turn is passed to the setErr() method. A NullPointerException is forced to test that the stacktrace is printed to the file. |
import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.PrintStream; /** * Main.java * * @author www.javadb.com */ public class Main { /** * Redirects System.err and sends all data to a file. * */ public void redirectSystemErr() { try { System.setErr(new PrintStream(new FileOutputStream("system_err.txt"))); String nullString = null; //Forcing an exception to have the stacktrace printed on System.err nullString = nullString.toUpperCase(); } catch (FileNotFoundException ex) { ex.printStackTrace(); } } /** * Starts the program * * @param args the command line arguments */ public static void main(String[] args) { new Main().redirectSystemErr(); } } |
| Do you know your Java? | |
| Take a Ten-Question-Java-Quiz! | |
Bookmark:
Search for code examples on this site
