2011-01-17 11 views
1

Weblogic 8.1上に、classpathにlog4j 1.2.8を持つエンタープライズアプリケーションをデプロイします。私はSLF4J 1.6.1と、次のエラーを取得しています:SLF4J Log4jLoggerAdapterの使い方

SLF4Jのバージョンを1.4.0以降 は1.2.12以降

http://www.slf4j.org/codes.html#log4j_version

リンク上のlog4jを必要とLog4jLoggerAdapterを使用することをお勧めします。

私は

Log4jLoggerAdapter logger = (Log4jLoggerAdapter) LoggerFactory.getLogger(HelloWorld.class); 
logger.info("Hello World"); 

Logger logger = LoggerFactory.getLogger(HelloWorld.class); 
logger.info("Hello World"); 

を変更しましたしかし、私はまだエラーが発生しています。 これを正しく実装する方法についてのアドバイスはありますか?

ありがとうございました。

[編集] slf4j-api-1.6.1.jarとslf4j-log4j12-1.6.1.jarは私の開発クラスパス上にあり、私のEARファイルのAPP-INF/libにパッケージ化されています。 log4j 1.2.8は、アプリケーションサーバーのクラスパス上にあります。

答えて

0

"SLF4Jバージョン1.4.0以降ではlog4j 1.2.12以降が必要"という警告は表示されません。 SLF4J 1.6.1はlog4j 1.2.8でうまく動作するはずです。つまり、何も変更する必要はありません。特に、Log4jLoggerAdapterへのキャストは不要ですが、あなたのコードを醜いものにすること以外は何ら助けになりません。

1

問題は同じslf4j-api JARと実装JAR(slf4j-log4j)を使用する必要があることです。

CLASSPATHの両方のJARが同じバージョンであることを確認してください。また、常にそれらの2つだけを置く:

  • APIのJAR
  • 実装のJAR(例えばlog4jのアダプタ、ジュリロガー、シンプルなロガー...)

編集:あなたのエラーメッセージにみるともう一度:おそらくlog4jライブラリをアップグレードするか、slf4jライブラリをダウングレードする必要があります。彼らは互換性のないバージョンです。

+0

「ただし、バグ68で報告されているように、環境によってはlog4jバージョンをアップグレードするのが難しい場合があります。このような状況に対応するために、SL4JLoggerAdapterはTRACEレベルをDEBUGとしてマップします。この問題を回避する方法はありませんか? –

+0

あなたは何を読みたいのですか?これら2つのバージョンは互換性がありません。私はslf4jダウングレードのために行くだろう、それは問題になることはできません。 – lzap