Java console output - File And to Console BOTH
Asked Answered
R

3

8

Probably this thread is a duplicate but can someone guide? I want to write the java program output to console and file at the same time. I know that i can send output to console with this piece of code

    PrintStream orgStdout = null;
    PrintStream fileStdout = null;

    orgStdout = System.out;
    try {
        fileStdout = new PrintStream(new FileOutputStream("C:\\testlogger.txt"));
        System.setOut(fileStdout);
        System.out.println("==============");
        for (int i = 0; i < 10; i++){
            System.out.println("" + i);
        }
        System.out.println("==============");
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

but how to keep output on console and on file as well??

P.S: not looking for an option where i output in file and display it console in different thread.

Raff answered 29/4, 2011 at 22:0 Comment(1)
Should look into log4jHooky
C
7

Look for TeeOutputStream from Apache Commons IO.

Clow answered 29/4, 2011 at 22:8 Comment(2)
There is no TeeOutputStream on that page.Shrovetide
Fixed with Apache Commons IO JavaDoc link.Hobbie
C
2

Don't call System.setOut(), and just make two calls to print. It's not very elegant, but you could make a method that outputs to both.

PrintStream orgStdout = null;
PrintStream fileStdout = null;

orgStdout = System.out;
try {
    fileStdout = new PrintStream(new FileOutputStream("C:\\testlogger.txt"));
    System.out.println("==============");
    for (int i = 0; i < 10; i++){
        System.out.println("" + i);
        fileStdout.println("" + i);
    }
    System.out.println("==============");
    fileStdout.println("" + i);
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

If you're running on a unix box, you could also use the tee command as long as everything is printed to stdout. You'd run your program like this:

java MyClass | tee testlogger.txt

Then everything printed to stdout goes to both the file and console.

Commit answered 29/4, 2011 at 22:8 Comment(0)
B
0

When you run your program

java {flags to the JVM} ClassName {parameters to your class} > output.txt 2> error.txt
Bui answered 31/1, 2017 at 8:23 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.