2011-11-04 6 views
2

std outとerr文が時折順不同で印刷されることに気付きました。たとえば、catchとexception、sysoutを使って何かを出力した後、スタック・トレースをerrストリームに出力すると、例外トレースがsysoutステートメントの前に表示されることがあります。std outとstd errを適切な順序で印刷する方法

これは、出力を1つのファイルにリダイレクトするときに、どのスタックトレースがどのsysoutに属するかを混乱させます。

毎回適切なシーケンスを取得することができる唯一の方法は、各sysout後にflushを呼び出すことですが、それは過度のことです。

これを行う唯一の方法はありますか?

答えて

1

新しいバッファリングされていない出力ストリームを作成し、System.setOutSystem.setErrを使用して、stdoutとstderrをこれらのストリームにリダイレクトすることができます。 Tuning Java I/O Performanceを参照してください。

2

エラーはSystem.outSystem.errの使用にあります。

ログフレームワークを使用して、エラーとメッセージを記録します。 SLF4j、logback、およびlog4jはすべて一般的に使用され、オープンソースです。

関連する問題