2

これは非常に単純な例ですが、何らかの理由で機能していません。明らかな何かが欠けているに違いありません。

非常に単純な log4j 2.0 サンプル プログラムを作成しようとしています。これらの 2 つの jar をクラスパスに追加しました。

log4j-api-2.0-beta8.jar

log4j-core-2.0-beta8.jar

そして、デフォルト設定を使用して、可能な限り単純な例を実行しました:

package testlog;


import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;


public class TestLog {

    static Logger logger = LogManager.getLogger(TestLog.class.getName());


    public static void main(String[] args) {

        logger.trace("Hello World");

        System.out.println("Test over");
    }
}

しかし、何らかの理由で、「テストオーバー」しか得られず、Hello World を取得することはできません。とにかく見つけることができます。私は間違った場所を探していますか?デフォルトの構成では、「テストオーバー」でコンソールに出力する必要があると私は理解しています。ログレベルを情報に変更しましたが、同じです。Logger 機能をクラスに引き出そうとしましたが、それでも同じです。log4j ドキュメント ページのこのチュートリアルに従っています。

http://logging.apache.org/log4j/2.x/manual/configuration.html#AutomaticConfiguration

何が間違っているのか理解できません。誰かが私が間違ったことに光を当てることができますか? 前もって感謝します。

更新ロガーは logger.error() で動作します。これは、デフォルトのフィルター/レベルに問題があることを意味しますか?

4

1 に答える 1

11

ドキュメントでその行を見逃しました:

デフォルトでは、Log4j はルート ロガーを Level.ERROR に割り当てることに注意してください。

する

logger.error("Hello World");

と表示されます。

情報やトレース レベルを表示するには、ロガーを構成する必要があります。

于 2013-08-20T14:48:06.160 に答える