Как мне передать вывод консоли Java в файл? - PullRequest
18 голосов
/ 09 марта 2009

Я обнаружил ошибку в приложении, которое полностью замораживает JVM. Созданная трассировка стека предоставит ценную информацию для разработчиков, и я хотел бы получить ее из консоли Java. Когда JVM падает, консоль зависает, и я больше не могу копировать содержащийся текст.

Есть ли способ передать консоль Java напрямую в файл или каким-либо другим способом доступа к выводу консоли приложения Java?

Обновление: я забыл упомянуть, не меняя код. Я ручной тестер.

Обновление 2: это под Windows XP и на самом деле это веб-приложение для запуска. Передача по конвейеру

javaws jnlp-url
не работает (пустой файл).

Ответы [ 5 ]

23 голосов
/ 09 марта 2009

На самом деле можно активировать трассировка в панели управления Java. Это передаст все, что заканчивается в консоли Java, в файл трассировки.

Файлы журналов будут в итоге:

  • /. Java / deploy / log в Unix / Linux
  • <Папка с данными приложения пользователя> \ Sun \ Java \ Deployment \ log в Windows
  • / ~ / Библиотека / Кэши / Java / вход в OS X
12 голосов
/ 09 марта 2009

(Если вы можете изменить код), вы можете установить для поля System.out другое значение:

System.setOut(new PrintStream(new FileOutputStream(fileName)));

Если вы запускаете скрипт (вызывая программу через java) из Unix, вы можете сделать:

/path/to/script.sh >& path/to/output.log
8 голосов
/ 06 ноября 2012

В Mac 10.8.2 журналы можно найти на /Users/<userName>/Library/Application Support/Oracle/Java/Deployment/log/.

Прежде чем вы должны включить ведение журнала из панели управления Java. Параметр "Enable logging" находится на вкладке "Advanced". Панель управления Java может быть запущена с "System preferences".

2 голосов
/ 09 марта 2009

Замороженная консоль, вероятно, означает тупик (это также может означать повторное генерирование исключения). Вы можете получить дамп стека, используя jstack. jps может упростить поиск процесса.

0 голосов
/ 26 марта 2014

попробуй это руководство у меня работает. это также поможет вам, как вы можете установить "System.setOut (fileStream);", "System.setErr (fileStream);"

...