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

17

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

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

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

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

javaws jnlp-url
не работает (пустой файл).     
задан Cedric Meury 09.03.2009 в 15:12
источник

5 ответов

22

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

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

  • & lt; user.home & gt; /. java / deploy / log in Unix / Linux
  • & lt; Папка данных пользовательских приложений & gt; \ Sun \ Java \ Deployment \ log в Windows
  • / ~ / Библиотека / Кэши / Java / журнал OS X
ответ дан Cedric Meury 09.03.2009 в 15:51
источник
12

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

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

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

/path/to/script.sh >& path/to/output.log
    
ответ дан oxbow_lakes 09.03.2009 в 15:14
источник
7

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

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

    
ответ дан Jan Jirout 06.11.2012 в 13:42
источник
2

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

    
ответ дан Tom Hawtin - tackline 09.03.2009 в 15:26
источник
0

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

    
ответ дан Muhammad Suleman 26.03.2014 в 12:03
источник