Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Как получить то что выводиться в консоль


Автор: savage_fx 4.8.2007, 12:37
Как сделать такое вот:

Если какая-то информация поступает в консоль через System.out (например при эксепшине или я сам напишу System.out.println(""))
 то выскакивает диалог с textarea , а в textarea - то , что вывелось в консоль последним

Автор: powerOn 4.8.2007, 14:46
Напиши свой собственный механизм ведения лога, который при посылке сообщения в лог будет выводить его и консоль и в textarea. 

Автор: LSD 4.8.2007, 16:19
Тут два варианта:
  • написать свой PrintStream и установить его в качестве стандартного потока вывода/ошибок (System.setOut(), System.setErr())
  • взять нормальную систему логгирования (например Log4j) и написать для нее свой appender
второй вариант предпочтительней и проще.

Автор: savage_fx 8.8.2007, 12:37
А что такое appender?

Как соединить консоль и Log4j ?

Автор: Metal_Heart 8.8.2007, 13:57
имелось ввиду - не в консоль выводить, а писать отдельный лог.

Автор: savage_fx 9.8.2007, 13:04
то есть можно, не прописывая в теле эксепшена код для записи в лог,можно как-то получить
описание ошибки ,которая вывалиться в эксепшн,откуда-то еще в тот момент?

Автор: AntonSaburov 9.8.2007, 13:18
Если блок оформлен как try ... catch, то достаточно сделать в catch printStackTrace(). И весь стек пойдет в err.

Но в хорошем коде все-таки лучше делать логи нормальные - log4j сложно переплюнуть smile

Что-то затянули тему по-моему smile

Автор: sith 9.8.2007, 16:39
.... может я чего то не понял... но помойму все намного проще...
... как мне показалось чуваку... нужно просто в своем гуи приложении в отдельном окне смотреть есть ли ошибка или нет...  и если нет что бы сведенья об ошибки выводились в компоненту... ну так создаеться простейший метод которому передееться обьект ексцепшина... а в этом методе происходит его чтения и отображения с помощью какого либо гуи элемента...
... в каждом блоке catch вызываеться этот метод и все...
... или я что то не так понял...

Автор: y3u 9.8.2007, 17:08
а в систем аут свой поток подоткнуть не проще тогда?

Автор: savage_fx 9.8.2007, 22:06
Вообщем идея была такая:

У меня уже более метра кода и не в каждом из блоков catch{} стоит вывод в Systen.out или PrintStackTrace() .Если в каком-то месте ошибка ,то в консоль все-равно что-то выводиться
и мне нужно было,что не редактировать теперь каждый  блок catch,перехватить ту инфу и чтобы в программе при возникновении любой ошибки,выскакаивал диалог с текстом того эксепшена . Типа
"Замечена ошибка там-то.Отправить сообщение разработчику?"

Автор: LSD 10.8.2007, 00:12
Цитата(savage_fx @  8.8.2007,  13:37 Найти цитируемый пост)
А что такое appender?

http://logging.apache.org/log4j/docs/api/org/apache/log4j/Appender.html.


Цитата(savage_fx @  8.8.2007,  13:37 Найти цитируемый пост)
Как соединить консоль и Log4j ?

Не совместить, а заменить консоль на Log4j.

Автор: math64 10.8.2007, 09:22
При старте программы создать JDialog с extends JTextComponent и кнопками закрытия и очистки текста.
Создать PrintStream который выводит в JTextComponent и показывает JDialog и переназначить им System.out и System.err.

Автор: LSD 11.8.2007, 11:26
Цитата(y3u @  9.8.2007,  18:08 Найти цитируемый пост)
а в систем аут свой поток подоткнуть не проще тогда?

Нет не проще, т.к. он же хотел показывать диалог именно когда произошла ошибка, а не чтобы он постоянно на экране торчал и выводил, все что туда пишется. Придется парсить, то что пишется в консоль на предмет начала/конца стектрейса.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)