2016-06-27 9 views
5

は、私はクラスからロガーを取得し、このようなログレベルを設定することができます。Log4Jでプログラムを使用してLoggerを設定する2? SLF4Jで

private static Logger logger = (Logger) LoggerFactory.getLogger(SomeClass.class.getName()); 
logger.setLevel(Level.TRACE); 

私はlog4jの2と同じことを行うにはどうすればよいですか?

+1

log4j2のドキュメントは何を表していますか? –

答えて

4

あなたがこれを行う:

// org.apache.logging.log4j.core.config.Configurator; 

Configurator.setLevel("com.example.Foo", Level.DEBUG); 

// You can also set the root logger: 
Configurator.setRootLevel(Level.DEBUG); 

はよくある質問を参照してください:https://logging.apache.org/log4j/2.x/faq.html#reconfig_level_from_code

ゲイリー

4

まず、でsetLevelのサポートはSLF4Jによって提供されていない - SLF4JロガーインタフェースがでsetLevelを持っていません方法。 APIとして、SLF4Jは、ロギング実装がどのように構成を実行するかについて全く知らない。

サンプルコードを見ると、Loggerへのキャストが表示されます。これはch.qos.logback.classic.Loggerです。これは、このときLogbackに関連付けられていることを意味します。

ゲーリーの答えは正しいですし、Log4j 2とLogbackの基本的な違いの1つを強調しています。 Logbackを使用すると、設定はLoggerFactoryから取得したものと同じロガーに密接に関連しています。 Log4jでは、アプリケーションが取得するロガーとはまったく別の構成を介してレベルを変更しています。

関連する問題