【发布时间】:2011-09-01 13:58:36
【问题描述】:
我有一个奇怪的问题,如果我能解决它会很好。出于调试目的(以及其他一些事情),我正在标准输出上编写控制台 Java 应用程序的日志。有些东西写在标准输出上,有些东西像错误一样打印在标准错误上。问题是这两者并不完全同步,所以打印行的顺序并不总是正确的。我想这是因为打印了很多东西,并且碰巧一个输出的缓冲区已满,因此另一个输出在第一个输出刷新缓冲区之前打印。
例如,我想这样写:
syso: aaa
syso: bbb
syso: ccc
syso: ddd
syso: eee
syserr: ---
有时打印的是
aaa
bbb
ccc
---
ddd
eee
有时中间没有换行,所以看起来像
aaa
bbb
ccc---
ddd
eee
每次我在输出上打印一些东西时,我都会用
刷新相同的输出System.out.flush();
或
System.err.flush();
如何解决这个问题? 顺便说一句,所有内容都打印在 Eclipse 控制台中。
【问题讨论】:
-
您是否考虑过使用像 Log4J 这样的专用日志框架?
-
@Péter 当然,这将是一种选择,但我希望有一个简单的解决方案来解决这个问题(供将来参考,如果没有别的)。