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 and Share




Need help with your Java code? It's secure and confidential.
This is how it works:
Send a detailed description of what you need help with, the more details the better. Also provide a deadline for when it has to be finished. More time means better chance of putting your request into the schedule.

If the request is serious you will shortly receive an email with the price, to which you have to respond if you accept.

Once you have accepted, the work will begin on developing your code by an experienced Java developer. When the code is finished a link to a secure payment will be sent to you.

The source code is then sent to you once the payment is completed.

IMPORTANT! The request needs to be very detailed, else it may be ignored.


Write your detailed request here:

E-mail address: