2011-11-15 13 views
6

私のアプリケーションでLog4jを使用していて、デバッグとエラーのためにいくつかのアペンダーがあります。私はtomcatでこれをテストし、正常に動作します。それぞれのファイルにすべてのログを生成します。しかし、WAS6.1にコードをデプロイすると、すべてのログがSystemOut.log内でのみ生成されます。WebsphereすべてのログはSystemOut.logに送られます

助けてください!

+0

いくつかのコードを添付するとよいでしょう。私はwebsphereを使用しており、すべてのログを別々のログファイルに入れています。 –

+0

commons-loggingなどのロギングファサードを使用していますか?その場合は、クラスローディング順序を親ラストに変更する必要があります。 – szhem

+0

あなたは親を最後にする必要はありません。それは他の効果があるので、可能ならば避けてください。 – dbreaux

答えて

8

WebSphere 6.1がJakarta Commons Logging(JCL)を内部的に使用し、コードまたはサードパーティのライブラリでJCLも使用されている場合、WebSphereの設定がlog4jを使用しようとしているアプリケーションと競合している可能性があります。これが起こっている場合は、あなたが見ているものを正確に見ることができます。

これに対処する方法を説明する複数のreferencesblog postsがあります。 WebアプリケーションのMETA-INF/servicesディレクトリ(WARアーカイブのルート)にorg.apache.commons.logging.LogFactoryという名前のファイルを作成するのが最も簡単な方法です。このファイルには、行含まれている必要があります(...少なくとものWebSphereの新しいバージョンで)

org.apache.commons.logging.impl.Log4jFactory 

を別のキーには、JCLジャーは、log4jのjarファイルと同じ場所からロードされなければならないということです。例えばどちらもWEB-INF/libのいずれか、または両方を共有ライブラリから取得します。したがって、WebSphere独自の提供されたコピーからJCLをロードすることはできません。彼らがdifferent classloadersによって読み込まれている場合、彼らはお互いを正しく見ることができません。

関連する問題