Как я могу передать вывод консоли Java в файл?
Я обнаружил ошибку в приложении, которое полностью замораживает JVM. Произведенная stacktrace предоставит ценную информацию разработчикам, и я хотел бы получить ее с консоли Java. Когда JVM выйдет из строя, консоль заблокирована, и я больше не могу копировать содержащийся текст.
Есть ли способ напрямую подключить Java-консоль к файлу или другим средствам доступа к выходу консоли приложения Java?
Обновление: я забыл упомянуть, не меняя код. Я - ручной тестер.
Обновление 2: это под Windows XP, и это действительно приложение для веб-запуска. Выполнение вывода
javaws jnlp-url
не работает (пустой файл).
Ответы
Ответ 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);"