0

log4j の現在のバージョン 2.0 ベータ版を使用しようとしています。log4j の必要なすべての jar ファイルを含めました。アプリケーションを起動すると、次のものがもたらされます。

Exception in thread "main" java.lang.NullPointerException
    at org.apache.logging.log4j.LogManager.getContext(LogManager.java:203)
    at org.apache.log4j.LogManager$PrivateManager.getContext(LogManager.java:62)
    at org.apache.log4j.LogManager.reconfigure(LogManager.java:50)
    at org.apache.log4j.BasicConfigurator.configure(BasicConfigurator.java:28)

ない

org.apache.log4j.BasicConfigurator.configure(); 

または

  private static final Logger log = LogManager.getLogger("...");

もう働け。

問題が何であるかを知っている人はいますか?

ご挨拶

マイク

4

1 に答える 1

1

問題は、BasicConfigurator が log4j v2 に実装されていないことです。log4j 1.2 から log4j 2 へのブリッジを介して BasicConfigurator クラスにアクセスしています。Log4j v2 を使用している場合は、BasicConfigurator を使用できなくなりました。

現時点では、ブリッジ ライブラリの名前は log4j-1.2-api-2.2.jar です。この質問が出されてから数年が経ちました。

そのため、ブリッジがあれば、ほとんどの Log4j 1.2 クラスにアクセスできますが、背後に実装がない場合があります。BasicConfigurator はその状況の一例です。これが、null ポインター例外が発生する理由です。

同様のセットアップで問題がなく、レベルが Debug ではなく Error に設定されている場合は、構成を行う必要はありません。エラーよりも低いレベルのログ メッセージが必要な場合は、独自のバージョンの BasicConfigurator を作成するか、クラスパスに log4j2.[xml|yaml|json] ファイルを配置する必要があるようです。

于 2015-04-23T14:46:50.637 に答える