2013-08-19 11 views
6

私はコンソールアプリケーションを持っており、Log4Jを使用してその出力を表示しています。これは、デフォルトでは非表示になっていても、オプションでデバッグメッセージを表示するスイッチを簡単に実装できるので便利です。Log4JまたはLogBackを使用したコンソールのプログレスバー

このアプリケーションは、プログレスバーが適切であろういるいくつかの長時間実行されるアクションを持っています。

Log4JまたはLogBackを使用してこれを実装する最も良い方法は何ですか?

+0

質問が分かりません。どのようにログエントリにプログレスバーを表示しますか?進捗状況を既に知っている場合は、xx%完了を印刷しないでください。 – ChrisM

答えて

3

コンソールに進行状況バーや更新テキストを書き込むには、\n(改行)の代わりに\r(改行)を出力して次の行が上書きされるようにします。これはquestionです。 F-ANSIライブラリを使用すると、前の行を上書きするなど、見栄えの良いコンソール出力を簡単に生成することができます。

ロギングフレームワークを使用して設定した場合、これは不可能であるだけでなく、必要なものではありません。 ChrisMが示唆しているように、ログへの正しい方法は、今までに完了した割合で新しい行を頻繁にログに記録することです。このようにして、あなたのプログラムが何をしているのか、それがどの程度文脈にあるのかを見ることができます。

あなたのやりたいことは、プログラムの実際の出力からログを分離することです(これは通常、プログレスバーの問題を無視しても良い考えです)。ロギングフレームワークを使用して、プログラムの実行に関する情報を記録します。実際のプログラムの出力はstdoutに直接System.outで書き込む必要があります。

これで、ロギングで何をしたいかを個別に決めることができます。また、stdoutに書き込むこともできますし、ログと出力を一緒に使用することもできますが、stderr(これははるかに簡単にリダイレクトされます)やログファイル(プログラムの出力をきれいにし、ログを残します後で参照)。 Javaが前提条件ではない場合


また、pvコマンドは、それを介して渡されたデータの量に基づいて、強力な、カスタマイズ可能なプログレスバーを提供します。

関連する問題