2011-02-07 25 views
38

私は、カスタムロギング機能(診断、通知、警告、エラーなど)を作成したいと書いているプログラムがあります。stderrまたはstdoutにメッセージを記録する必要がありますか?

これを行うにはstdoutまたはstderrストリームを使用する必要がありますか?それは一種の通訳者であり、ユーザはそれを出力してもらうことができます。

編集:フレームワークをログに私を推薦停止してください:(

+0

javaなどの言語を使用する場合は、log4jなどの有名なロギングフレームワークを使用してください。 – flash

+0

ロギングの実装に時間を費やす前に、いくつかのロギングライブラリを調べることをお勧めします。あなたが書いている言語を教えてくれたら、私はたくさんの提案があると確信しています。 –

+0

あなたはどんな苦労をしていますか? – CloudyMarble

答えて

30

正規出力(プログラムを実行しているの実際の結果は)stdoutに行く必要があり、あなたのようなものは、(例えば、診断、予告、警告、エラー)を言及stderr

「通常の出力」がない場合は、どちらを選択するかは問題ではないと言います。ログは唯一の出力なので、stdoutに移動する必要があります。あなたはそれがまだstderrに行くべき "例外的な情報"であると主張することができます。

+0

それは通訳だから、大多数のユーザーが何かを 'stdout'に出力すると思っています。 'stderr'への印刷をサポートしているかもしれませんが、私はそれが自分の葬儀だと思います... – rfw

8

stdoutに何か書きますか?答えがYesの場合、誰かが通常のフローと、stdoutからリダイレクトするために使用されたファイルの途中のエラーを区別するのはかなり難しいでしょう。

stdoutを別のプログラムの入力として使用するとどうなりますか?このデバッグ情報を解析できますか?この場合、重大なエラーのみをstderrに書き込むとよいでしょう。あなたが何か別のものを書く必要があれば、追加のログファイルに書き込むことを検討するかもしれません。

関連する問題