私のアプリケーションでLog4jを使用していて、デバッグとエラーのためにいくつかのアペンダーがあります。私はtomcatでこれをテストし、正常に動作します。それぞれのファイルにすべてのログを生成します。しかし、WAS6.1にコードをデプロイすると、すべてのログがSystemOut.log内でのみ生成されます。WebsphereすべてのログはSystemOut.logに送られます
助けてください!
私のアプリケーションでLog4jを使用していて、デバッグとエラーのためにいくつかのアペンダーがあります。私はtomcatでこれをテストし、正常に動作します。それぞれのファイルにすべてのログを生成します。しかし、WAS6.1にコードをデプロイすると、すべてのログがSystemOut.log内でのみ生成されます。WebsphereすべてのログはSystemOut.logに送られます
助けてください!
WebSphere 6.1がJakarta Commons Logging(JCL)を内部的に使用し、コードまたはサードパーティのライブラリでJCLも使用されている場合、WebSphereの設定がlog4jを使用しようとしているアプリケーションと競合している可能性があります。これが起こっている場合は、あなたが見ているものを正確に見ることができます。
これに対処する方法を説明する複数のreferencesとblog 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によって読み込まれている場合、彼らはお互いを正しく見ることができません。
いくつかのコードを添付するとよいでしょう。私はwebsphereを使用しており、すべてのログを別々のログファイルに入れています。 –
commons-loggingなどのロギングファサードを使用していますか?その場合は、クラスローディング順序を親ラストに変更する必要があります。 – szhem
あなたは親を最後にする必要はありません。それは他の効果があるので、可能ならば避けてください。 – dbreaux