Ответ 1
Перейдите в run as и выберите Run Configurations
→ Common
, а в стандартном вводе и выводе вы также можете выбрать файл.
Как мы можем перенаправить вывод консоли eclipse в файл? Я могу:
Run Configuration
→ Commons
-. > Select a file
System.setOut(PrintStream)
и System.setErr(PrintStream)
.Проблема с 1) заключается в том, что мне нужно записывать вывод консоли в разные файлы вместо одного файла.
Проблема с 2) заключается в том, что он хранит только вывод консоли, сгенерированный с помощью System.out.println()
или stacktrace созданного исключения. Он не захватывает другие виды выходов, например. log4j предупреждения и т.д.
Как мы можем программно перенаправить вывод консоли на разные файлы?
Перейдите в run as и выберите Run Configurations
→ Common
, а в стандартном вводе и выводе вы также можете выбрать файл.
Вы можете использовать "переменную" внутри выходного имени файла, например:
/tmp/FetchBlock-${current_date}.txt
текущая_дата:
Возвращает текущее системное время, отформатированное как yyyyMMdd_HHmm. Дополнительный аргумент может использоваться для обеспечения альтернативного форматирования. Аргумент должен быть допустимым для java.util.SimpleDateFormat.
Или вы также можете использовать system_property или env_var, чтобы указать что-то динамическое (либо нужно указать в качестве аргументов)
Вы можете установить выход System.out программно, выполнив:
System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream("/location/to/console.out")), true));
Edit:
В связи с тем, что это решение основано на PrintStream
, мы можем включить autoFlush, но в соответствии с docs:
autoFlush - логическое; если true, выходной буфер будет сброшен всякий раз, когда записывается массив байтов, один из методов println вызывается или символ новой строки или байта ('\n') записывается
Итак, если новая строка не написана, запомните System.out.flush()
вручную.
(Спасибо, Роберт Тупело-Шнек)
Мы можем сделать это, установив переменную класса 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