Вывод консоли Java - Файл И на Консоль ОБА - PullRequest
6 голосов
/ 30 апреля 2011

Вероятно, эта тема является дубликатом , но кто-то может руководить? Я хочу записать вывод программы Java в console и file одновременно. Я знаю, что могу отправить вывод на консоль с этим фрагментом кода

    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();
    }

а как сохранить вывод на консоль и на файл?

P.S: не ищу вариант, где я выводить в файл и отображать его консоли в другом потоке.

Ответы [ 3 ]

5 голосов
/ 30 апреля 2011

Ищите TeeOutputStream из Apache Commons IO .

2 голосов
/ 30 апреля 2011

Не вызывайте System.setOut (), а просто сделайте два вызова для печати.Это не очень элегантно, но вы могли бы сделать метод, который выводит на оба.

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();
}

Если вы работаете в Unix-боксе, вы также можете использовать команду tee, пока все напечатанона стандартный выводВы запускаете свою программу так:

java MyClass | tee testlogger.txt

Затем все, что выводится на стандартный вывод, отправляется как в файл, так и в консоль.

0 голосов
/ 31 января 2017

при запуске вашей программы

java {флаги для JVM} ClassName {параметры вашего класса}> output.txt 2> error.txt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...