web-dev-qa-db-ja.com

LOG4J2:プログラムで構成するときに「log4j2構成ファイルが見つかりません。」の印刷を無効にします。

XML構成ファイルを使用していませんが、ロガー構成をプログラムで設定しています。ロガーは正しく機能しますが、以下のコードの最初の行を呼び出すと、構成ファイルが見つからず、デフォルトの構成が使用されることを通知する警告ERRORメッセージが表示されます。

ただし、プログラムをプログラムで自分で追加するため、プログラムを実行するたびにこのメッセージがコンソールに表示されることは望ましくありません。

メッセージ:

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console.

以下のコードを呼び出すと、次のようになります。

LoggerContext context = (LoggerContext) LogManager.getContext(false);

または、最初にルートロガーを取得した場合:

Logger logger = LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);

このメッセージの表示を無効にするために設定できるプロパティはありますか?または別のアプローチ?.

[〜#〜] note [〜#〜]:プロパティを設定してLog4j2 JMXに関する別の通知を無効にしました-Dlog4j2.disable.jmx=true。しかし、私はこれを見つけることができませんでした。

16
Excite

そのメッセージを表示しないようにするには、次のシステムプロパティを追加します。

-Dorg.Apache.logging.log4j.simplelog.StatusLogger.level=OFF

または、もっと簡単に:

import org.Apache.logging.log4j.Level;
import org.Apache.logging.log4j.status.StatusLogger;

...

StatusLogger.getLogger().setLevel(Level.OFF);
13
Paul Vargas

これは、メインクラスで簡単に行うことができます。

static {
    StatusLogger.getLogger().setLevel(Level.OFF);
}
9
Kin Cheung

コードからlog4j構成を適切に初期化するには、initializeメソッドを実装する必要があります。

ソースコードも提供している以下のページの「構成ファイルなしでコードでlog4j2を構成するにはどうすればよいですか」セクションを確認してください。

http://logging.Apache.org/log4j/2.x/faq.html

2