7

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

このアプリケーションには、プログレス バーが適切な、実行時間の長いアクションがいくつかあります。

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

4

1 に答える 1

3

プログレスバーまたは何らかの更新テキストをコンソールに書き込むには、\r(改行) の代わりに (改行) で出力を終了\nし、次の行で上書きします。この質問はさらに詳しく説明します。F-ANSIライブラリを使用すると、前の行を上書きするなど、見栄えの良いコンソール出力を簡単に生成できます。

しかし、ロギング フレームワークを使用することに設定されている場合、これは不可能であるだけでなく、望んでいるものでもありません。ChrisM が示唆するように、進行状況をログに記録する正しい方法は、これまでに完了したパーセントで頻繁に新しい行をログに記録することです。このようにして、プログラムが実行していることと、コンテキスト内での進行状況の両方を確認できます。

あなたがやりたいように聞こえるのは、ログをプログラムの実際の出力から分離することです (進行状況バーの問題を無視しても、これは一般的に良い考えです)。ログ フレームワークを使用して、プログラムの実行に関する情報をログに記録します。stdout実際のプログラムの出力は、経由で直接書き込まれるべきですSystem.out

次に、ロギングで何をしたいかを個別に決定できます。に書き込むこともできstdout、ログと出力を一緒にstderr保存できますが、(リダイレクトがはるかに簡単になる)またはログファイル(プログラムの出力がきれいになり、参照用にログを保持する)に書き込む方がよいでしょう。後で)。


また、Java が前提条件でない場合、pvコマンドは、パイプされたデータの量に基づいて、強力でカスタマイズ可能な進行状況バーを提供します。

于 2015-06-13T17:27:23.863 に答える