2014-02-10 5 views
2

При отладке кода я использую System.out & System.err довольно много. Проблема заключается в том, когда возникает исключение, и я использую System.out в то же время, что результат не выглядит очень организованным.Синхронизация System.out & System.err

[CLIENT]:postinit: vic.rpg.gui.GuiMain.init() 
java.net.ConnectException: Connection refused: connect 
[CLIENT]:Destroying Network Thread... 
[CLIENT]:done! 
    at java.net.DualStackPlainSocketImpl.connect0(Native Method) 
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) 
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source) 
    at java.net.PlainSocketImpl.connect(Unknown Source) 
... 
[CLIENT]:Starting Server... 

Это не очень серьезный вопрос, но иногда это делает чтение журналов немного сложнее.

+0

Проблемы с промывкой. – devnull

+3

У вас не было бы таких проблем, если бы вы использовали правильную структуру ведения журнала. – assylias

ответ

1

Вы можете избежать этой проблемы, вызвав flush каждый раз, когда вы пишете в любой поток. например:

System.out.println ("Writing to *out*"); 
System.out.flush(); 

Если вы регистрируетесь из разных потоков, ваши сообщения о регистрации будут естественным образом чередовать. Если вы хотите чисто отделить выходные данные от потоков, я бы предложил использовать библиотеку журналов, такую ​​как log4j.

+0

Я уже завернул System.out в свой собственный PrintStream, добавив 'super.flush()', чтобы каждый метод работал. – Vic

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

  • Нет связанных вопросов^_^