22 ноября 2008

Перенаправление системного вывода в файл

Для того что бы выводить информацию из Java программы в файл не обязательно использовать навороченные системы логгирования.
Можно просто перенаправить стандартный поток вывода и стандартный поток для ошибок в файл.
Сделать это можно с помощью следующего фрагмента кода:


PrintStream st = new PrintStream(new FileOutputStream("output.txt"));
System.setErr(st);
System.setOut(st);

6 комментариев:

Анонимный комментирует...

Т.е. туда будут писаться все исключения, возникшие во время работы программы? Или нужно явно в каждом месте указывать?
Можно примерчик, где кидается исключение и происходит перенаправление в файл?
Спасибо! :)ca

Rumoku комментирует...

Да , туда будут писаться все перехваченные исключения, те которые вы выводите через e.printStackTrace();

Единственное что надо сделать , это в начале загрузки программы выполнить перенаправления потока, как написано в заметке.

Анонимный комментирует...

Окей, спасибо, надо будет попробывать.
А если я не обрабатываю исключение, хотя бы тем же printStackTrace();
исключение будет писаться или нет?
Ну например
String [] array = {"Коля", "Вася", "Петя"}
String name = array[5];

Тут произойдет исключение ArrayIndexOutOfBoundsException

Так в таком случае, сработает этот механизм или нет? Еще раз спасибо :)

Rumoku комментирует...

да.

Анонимный комментирует...

Попробовал, действительно все работает.
Но есть еще вопрос. А можно ли продублировать вывод и в файл и в консоль IDE?

Анонимный комментирует...

Да, можно.