Как мне передать выходные данные консоли Java в файл?
-
06-07-2019 - |
Вопрос
Я обнаружил ошибку в приложении, которая полностью замораживает JVM.Созданный stacktrace предоставил бы разработчикам ценную информацию, и я хотел бы получить ее из консоли Java.Когда JVM выходит из строя, консоль зависает, и я больше не могу скопировать содержащийся текст.
Есть ли способ передать консоль Java непосредственно в файл или каким-либо другим способом доступа к консольным выводам Java-приложения?
Обновить:Я забыл упомянуть, не меняя код.Я ручной тестировщик.
Обновление 2:Это работает под управлением Windows XP, и на самом деле это приложение веб-запуска.Прокладка трубопровода на выходе
javaws jnlp-urlне работает (пустой файл).
Решение
На самом деле можно активировать отслеживание в панели управления Java.Это передаст все, что попадает в консоль Java, в файл трассировки.
Файлы журнала окажутся в:
- <user.home>/.java/развертывание/вход в систему в Unix/Linux
- <User Application="" Data="" Folder="">\Sun\Java\Развертывание\вход в систему в Windows
- /~/Библиотека/Кэширование/Java/вход в OS X
Другие советы
(если вы можете изменить код), вы можете установить в поле System.out
другое значение:
System.setOut(new PrintStream(new FileOutputStream(fileName)));
Если вы запускаете скрипт (вызываете программу через java
) из Unix
, вы можете сделать это:
/path/to/script.sh >& path/to/output.log
В Mac 10.8.2 журналы можно найти на /Users/<userName>/Library/Application Support/Oracle/Java/Deployment/log/
. Р>
Прежде чем вам нужно будет включить ведение журнала из панели управления Java. Опция & Quot; Enable logging
& Quot; находится на вкладке " Advanced
" ;. Панель управления Java может быть запущена из & Quot; System preferences
& Quot;.
Замороженная консоль, вероятно, означает тупик (это также может означать повторное создание исключения). Вы можете получить дамп стека с помощью jstack
. jps
может упростить процесс поиска.
попробуйте это руководство У меня это работает. также вы узнаете, как установить " System.setOut (fileStream); " ;, " System.setErr (fileStream); "