2

そこで、今日、興味深い問題に遭遇しました。サードパーティの jar を多数使用する Java EE Web アプリがあります。これには休止状態が含まれます。

ロギングの目的で、SDK に付属する Java ロギング API を使用します。通常、私たちはログ記録にかなり注意を払っていますが、log4j を使用して独自のログ ファイルを作成するサード パーティの jar の 1 つでこの問題に遭遇しました。独自のコードからステートメントをログに記録しただけでなく、休止状態のコードのデバッグを書き始めた結果、3 GB 相当のログをすぐにログに記録するバッチ ジョブが発生しました。

これには2つの問題があります:

  1. このログの問題を修正する必要があります (可能であれば、サードパーティの jar の log4j 構成をヤンクアウトしたり、変更したりしたくありません)。サードパーティのjarファイルのlog4j構成を変更またはヤンクする以外に、サードパーティのjarファイルの構成を上書きする独自のlog4j構成を作成する以外に、これを行う良い方法はありますか? 2つのオプションのどちらも好きではありませんが、最善を尽くしたいと思っています。
  2. サードパーティのライブラリが楽しそうにログオフすることを期待するのは正しいことですか? これはデザインが悪いと思います。これについて、コミュニティの意見を聞きたいです。

サードパーティのライブラリでエラーをログに記録したい。そうは言っても、このサードパーティのjarが、担当するパッケージ以外のパッケージからDEBUGをログに記録するのは少し厄介だと思います。たとえば、私の場合、このサードパーティの jar は、休止状態のメソッドを呼び出していなくても、休止状態のデバッグをログに記録しています。実行したバッチ ジョブは、この jar で API を呼び出しませんでした。そこにあるものを自分のlog4j構成でオーバーライドするのが最善の方法のようです。

4

2 に答える 2

1

log4j または一般的に使用される別のロギング フレームワークを使用している場合は、クラスパスの前の方に別の lo4j.properties を指定することで、その構成をオーバーライドできます。log4j を使用する場合のように、必要なログ レベルを簡単に構成できる限り、サード パーティのログは良いことだと思います。ロギングを追加するためにサードパーティのコードをインストルメント化するよりも、より少ない情報を出力するようにロギング システムを構成する方が常に簡単です。

于 2009-02-04T15:23:01.370 に答える
1

私が覚えていることから、ログを実行している JAR の前にクラスパスに独自の log4j プロパティ ファイルを指定するだけで、これが取得されます。メモリの奥深くまで掘り下げると、Hibernate は少なくとも JAR のルートからこれを取得するため、プロパティをパッケージ化する必要はありません。

より広い問題として、はい、私は間違いなくライブラリのログが必要です-そうでなければ、ログがない場合に何か問題が発生したかどうかをどうやって知ることができますか?

于 2009-02-04T15:23:31.370 に答える