Как мы можем перенаправить вывод программной консоли Java в несколько файлов? - PullRequest
159 голосов
/ 19 апреля 2011

Как мы можем перенаправить вывод консоли eclipse в файл?Я могу:

  1. Run Configuration -> Commons -> Select a file.
  2. Использовать System.setOut(PrintStream) и System.setErr(PrintStream).

Проблема с 1) заключается в том, что мне нужно записывать вывод консоли в разные файлы вместо одного.

Проблема с 2) заключается в том, что он хранит только консольный вывод, сгенерированный System.out.println() или отслеживанием стека исключительной ситуации.Он не захватывает другие виды выходных данных, например предупреждения log4j и т. Д.

Как программно перенаправить вывод консоли на разные файлы?

Ответы [ 5 ]

175 голосов
/ 17 апреля 2012

Перейдите к запуску от имени и выберите Run Configurations -> Common, а в стандартном вводе и выводе вы также можете выбрать файл.

11 голосов
/ 03 мая 2015

Вы можете использовать «переменную» внутри выходного имени файла, например:

/tmp/FetchBlock-${current_date}.txt

текущая_дат:

Возвращает текущее системное время, отформатированное как yyyyMMdd_HHmm. Необязательный аргумент может использоваться для обеспечения альтернативного форматирования. Аргумент должен быть допустимым шаблоном для java.util.SimpleDateFormat.

Или вы также можете использовать system_property или env_var, чтобы указать что-то динамическое (либо нужно указать в качестве аргумента)

8 голосов
/ 18 декабря 2014

Вы можете установить выход System.out программно, выполнив:

System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream("/location/to/console.out")), true));

Редактировать:

В связи с тем, что это решение основано на PrintStream, мы можемвключить автозапуск, но в соответствии с документами :

autoFlush - логическое значение;если true, выходной буфер будет очищаться всякий раз, когда записывается байтовый массив, вызывается один из методов println или пишется символ новой строки или байт ('\ n')

Так что еслиновая строка не написана, не забудьте System.out.flush() вручную.

(Спасибо, Роберт Тупело-Шнек)

0 голосов
/ 27 февраля 2018

Для решения проблемы я использую переменную $ {string_prompt}. Показывает диалог ввода при запуске приложения. Я могу установить дату / время вручную в этом диалоговом окне.

  1. Переместить курсор в конец пути к файлу. enter image description here

  2. Щелкните переменные и выберите string_prompt enter image description here

  3. Выберите Применить и Выполнить enter image description here enter image description here

0 голосов
/ 19 июня 2017

Мы можем сделать это, установив переменную класса System следующим образом

System.setOut (новый PrintStream (новый FileOutputStream («Путь к выходному файлу»))). Также вам нужно закрыть или очистить переменную 'out' (System.out.close () или System.out.flush ()), чтобы не пропустить какой-либо вывод.

Источник: http://xmodulo.com/how-to-save-console-output-to-file-in-eclipse.html

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