2012-08-29 4 views
6

ビルドパスにlog4j.jarを持つプロジェクトAがあります。jarのlog4jロギングを設定するにはどうすればよいですか?

Logger _log = Logger.getLogger(A.<>.class); 
... 
_log.info("..."); 

私はB.プロジェクトBは、すでに独自のlog4jのjarファイルとそれ自身の.xml設定ファイルを持っている別のプロジェクトにjarファイルとしてプロジェクトをエクスポートしています:私はの形式でログ・ステートメントを持っているクラスの数を持っています。私は様々なレベルでConsole Apenderにログするために、特定のクラスをAから構成したいと思っています。どうすればいいですか?

答えて

1

まあ、基本的には、そうしてはいけません。このように考えると、アプリケーションに含まれている各ライブラリは独自のロギング設定をホストし、アプリケーション内にあるライブラリをオーバーライドする可能性があります。 。あなたはそれを望んでいないでしょう。そうしないでください。

[あなたが実際にそれをしたい場合は、メインアプリケーションのxmlファイルによって上書きされるプロパティファイルをjarファイルに含めることができます。詳細はhereを参照してください。しかし、しないでください。 :)]

1

一般に、あなたはしません。一般的に、log4j構成ファイルを1つ作成したいとします。しかし、私はあなたのコードから明示的に設定を読み込むことができると思います。the log4j documentation

1

log4j.jarのバージョンを選択します。これはおそらく新しいものです。 1つのバージョンのみを使用できます。プロジェクトAとプロジェクトBのログ設定をマージする必要があります。実行時にlog4jクラスでこれを実行できますが、実行しないでください。弾丸を噛んで、ソースコントロールで一度マージしてください。

+0

を参照してください。次に、com.A.something用のロガーを追加すると、Aがjarファイルにパッケージ化されていても、Bの構成ファイルでOKが動作しますか? – mvd

+0

はい。しかし、ロギングの設定をBとして扱うべきではありません。それはアプリ全体に属します。 Bの内部の設定をデフォルトとして、オーバーライドまたは完全に置き換えると考えてください。クラスがどのjarに入っているかは、適用されるロギング構成とは無関係です。彼らはちょうど一緒にパッケージ化されています。 Log4jはクラスパスから設定ファイルを読み込み、Javaはクラスパス上でクラスを見つけます。両方を同じ瓶に入れるだけで便利です。 –

関連する問題