Подтвердить что ты не робот

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

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

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

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

Обновление 2: это под Windows XP, и это действительно приложение для веб-запуска. Выполнение вывода

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

Ответ 1

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

В файлах журналов будет указано:

  • < user.home > /. java/deploy/log in Unix/Linux
  • < Папка данных пользовательских приложений > \Sun\Java\Deployment\log в Windows
  • /~/Library/Кэши/Java/журнал OS X

Ответ 2

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

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

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

/path/to/script.sh >& path/to/output.log

Ответ 3

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

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

Ответ 4

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

Ответ 5

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