2017-01-04 86 views
2

私はlog4j 1.2をcommons-loggingで使用しています。今私はそれをlog4j2にアップグレードしようとしています。 しかし、log4j2をcommons-loggingで使用してlog4j2を初期化する方法。log4j2を使用したCommons-Logging

以下のようにコモンズロギングを初期化しようとしました。

**Statement1**: static Log log = new Log4JLogger(Logger.getLogger(Example.class)); 
**Statement2**:log.debug("debug statement"); 

その作業罰金ここで私はorg.apache.log4j.Loggerのオブジェクトで初期化された型org.apache.commons.logging.Logのオブジェクトを使用しています。(org.apache.log4j.Loggerがlog4j2からとorg.apache.logging.log4j.Loggerに変更されたlog4jの1.2からクラスである)

log4j2にアップグレードした後、は、org.apache.log4j.Logger型の型のコンストラクタには、Log4JLogger()の引数が必要です。

Log4j2でコモンズロギングを使用するにはどうすればよいですか?

答えて

2

クラスパスにlog4j-jcl-2.7依存関係を追加する必要があります。

あなたが明示的にLog4JLoggerを使用しないでください。

また、Log4j2はそのことにLog4jの1と異なっていることに注意して

import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 

public class MyClass { 
    private Log log = LogFactory.getLog(MyClass.class); 
    ... 

を使用し、あなたのコードでは、「which jars" question in the FAQ

を参照してください。 APIとその実装を明確に分離しているので、ラッパーライブラリを使用する利点は、10年前のLog4j 1よりはるかに少なくなっています。

Log4j2 APIを直接使用することを検討してください。これは、APIと実装を同じように分離し、commons loggingやslf4jよりも豊富な機能を備えています。

Log4j2 APIを直接使用するリスクはほとんどありません。Log4j2 APIを直接使用するアプリケーションでLogback(または別のslf4j実装)を使用することを決心した場合は、log4j-to-slf4j-2.xモジュールが常に存在します。

+0

私はlog4j2を動作させるためにjclを使用する必要があることを知っています。しかし、どのクラス/コンストラクタ、私はロガーを初期化するために使用する必要がありますか? – user3207875

+0

答えを更新しました。 –

関連する問題