1

Log4J/Tomcat で同時に 2 つの異なるレベルのロギングを使用することは可能ですか? 私の状況は次のとおりです。同じ Tomcat サーバー上でいくつかの Web アプリケーションが動作しています。これらのアプリケーションの一部には、独自の log4j プロパティ ファイル (レガシー) があります。

私が追加したいのは、これらすべてのアプリケーションで動作する JDBCAppender を備えた新しいロガーです (これらは一緒に使用することを意図しているため、選択したデータベースにログを記録させることは非常に便利です)。これを希望どおりに行うために、プロパティ ファイルのエントリを作成しました (構文上の目的で、これらのローカル プロパティ ファイルの 1 つでテストしました)。

この新しい logger/JDCBAppender をサーバー レベルの log4j.properties ファイルにドロップして、Web アプリケーションにアクセスさせることはできますか? たとえば、ロガーを「com.xxx.yyy」と定義すると、「com.xxx.yyy」パッケージにクラスを持つ Web アプリケーションで、次のような呼び出しでロガーを取得します。

private static Logger logger = Logger.getLogger(MyClass.class);

完全な宣言が com.xxx.yyy.MyClass であると仮定します。

log4j.properties ファイルを$CATALINA_HOME/libディレクトリにドロップし、必要な jar ファイルを同じディレクトリに配置しようとしましたが (以下のコメントで指示されているように)、サーバーを起動しても、そのファイルが取得されないようです。 、それは私のwebappからのものを拾いますが。log4j がそれを取得するには、プロパティ ファイルがクラスパス上にある必要があることはわかっていますが、複数の log4j.properties ファイルがある場合、同様のクラス パス スタイルの問題が発生する可能性はありますか?

更新: 試したことの説明を更新しました。

4

1 に答える 1

0

追加の調査を行ったところ、複数の log4j.properties ファイルがクラスパスにある場合、Java クラス/ライブラリ ファイルと同様に、システムは最初に見つかったファイルを使用することがわかりました。

したがって、サーバー レベルのプロパティ ファイルを追加すると、個々の Web アプリの従来のプロパティ ファイルがすべて無視されるため、私が説明した状況は現実的ではありません。同様のことを行うことはまだ可能かもしれませんが、私の質問は特に log4j.properties ファイルに焦点を当てることを意図していました。

于 2013-06-21T13:40:50.223 に答える