2010-11-30 2 views
1

Когда приложение запускается, а не с консоли, но из значка пользовательского интерфейса, где идет стандартный поток, я имею в виду, могу ли я, например, увидеть этот журнал? Где простой старый System.out работает как «по умолчанию»?Где идет поток журнала?

+0

Все бревенчатые потоки ведут к ловушке. – mob 2010-11-30 23:56:52

ответ

0

Как сказал Ангус, без консоли вы не получите выход.

Как только вы запустили приложение в качестве графического интерфейса, вы можете установить поле System.out для входа в другой пункт назначения (а не в TTY или консоль), используя System.setOut. Таким образом, вы можете записать в файл, пройдя мимо:

System.setOut(new PrintStream(path_to_a_file)); 

Однако это не рекомендуется.

Лучшее, что вы можете сделать, это использовать структуру ведения журнала, такую ​​как log4j или SLF4J, и выполнить регистрацию (в файл, сетевой хост или консоль) таким образом.

+0

+1: Если вы не контролируете его, вы не знаете, где он заканчивается. В нашей производственной среде System.out буферизуется. Следовательно, мы не можем быть уверены, что увидим последнее напечатанное (но еще), которое довольно утомительно при попытке увидеть, что происходит. Именно тогда мы решили исправить конфигурацию ведения журнала, чтобы все было отправлено в файлы. – 2010-12-01 00:16:01

0

Если приложение не имеет консоли, то обычно стандартный вывод не идет никуда.

Смежные вопросы