The Java Developers Almanac 1.4


Order this book from Amazon.

   
Home > List of Packages > java.lang  [58 examples]

e54. Redirecting Standard Output, and Error

This example replaces standard output and error with a print stream that copies its output to both the console and to a file.
    // All writes to this print stream are copied to two print streams
    public class TeeStream extends PrintStream {
        PrintStream out;
        public TeeStream(PrintStream out1, PrintStream out2) {
            super(out1);
            this.out = out2;
        }
        public void write(byte buf[], int off, int len) {
            try {
                super.write(buf, off, len);
                out.write(buf, off, len);
            } catch (Exception e) {
            }
        }
        public void flush() {
            super.flush();
            out.flush();
        }
    }
Here's an example that uses the class:
    
    try {
        // Tee standard output
        PrintStream out = new PrintStream(new FileOutputStream("out.log"));
        PrintStream tee = new TeeStream(System.out, out);
    
        System.setOut(tee);
    
        // Tee standard error
        PrintStream err = new PrintStream(new FileOutputStream("err.log"));
        tee = new TeeStream(System.err, err);
    
        System.setErr(tee);
    } catch (FileNotFoundException e) {
    }
    
    // Write to standard output and error and the log files
    System.out.println("welcome");
    System.err.println("error");

 Related Examples
e48. The Quintessential Java Application
e49. Terminating the Application
e50. Determining When the Application Is About to Exit
e51. Computing Elapsed Time
e52. Loading Native Code
e53. Implementing a Class That Can Be Sorted
e55. Getting the Size of the Heap

See also: Arrays    Assertions    Classes    Commands    Numbers    Objects    Strings    System Properties    Threads   


© 2002 Addison-Wesley.