同步System.out& System.err的

时间:2014-02-10 10:44:22

标签: java debugging system.out system.err

调试代码时,我倾向于使用System.out& System.err非常多。问题是当异常发生时我使用System.out同时结果看起来不是很有条理。

[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...

它不是很严重,但它有时会让阅读日志变得有点困难。

1 个答案:

答案 0 :(得分:1)

每次写入任一流时,都可以通过调用flush来避免此问题。 e.g:

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

如果从不同的线程进行日志记录,则日志消息将自然交错。如果您想通过线程干净地分隔输出,我建议使用log4j等日志库。