私の Web アプリケーション (Tomcat 7 にデプロイ) は、jboss-logging を使用してログを記録する hibernate 4.2 を使用しています。Jboss ロギングは、パス上で slf4j を見つけて使用します。次に、ログを出力する logback-classic があります。すべてがうまく機能しますが、ルート ログ レベルをカスタマイズできません。つまり、
<logger name="o.h.cfg.annotations" level="info"/>
<logger name="rest.helpers" level="info"/>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
結果:
logback-test 16:47:03.689 [http-bio-8080-exec-5] DEBUG org.jboss.logging - ロギング プロバイダー: org.jboss.logging.Slf4jLoggerProvider
logback-test 16:47:04.244 [http-bio-8080-exec-5] DEBUG ohcfg.annotations.EntityBinder
logback-test 10:00:11.911 [localhost-startStop-1] INFO rest.helpers.MyApplication
jboss (ohcfg.annotations.*) からのメッセージの場合、レベルは info に設定されますが、デバッグ メッセージが出力されます。slf4j を直接使用すると (rest.helpers.*)、デバッグ メッセージが正しく除外され、情報メッセージが出力されます。
ここで、root ログ レベルが「none」に設定されている場合、一部のデバッグ メッセージを許可すると、それらすべてが出力されます。
<logger name="o.h.cfg.annotations" level="debug"/>
<logger name="rest.helpers" level="debug"/>
<root level="none"/>
logback-test 10:22:25.926 [localhost-startStop-1] DEBUG rest.helpers.MyApplication -dMyApplication() 2013 年 8 月 2 日 10:22:26 AM org.glassfish.jersey.server.ApplicationHandler 初期化情報: ジャージー アプリケーションの開始
logback-test 10:22:26.253 [localhost-startStop-1] INFO rest.helpers.MyApplication
logback-test 10:22:42.995 [http-bio-8080-exec-5] DEBUG org.jboss.logging - ロギング プロバイダー: org.jboss.logging.Slf4jLoggerProvider
logback-test 10:22:43.025 [http-bio-8080-exec-5] DEBUG org.hibernate.type.BasicTypeRegistry
org.hibernate デバッグ メッセージを許可していません。なぜ表示されたのですか? 正しい構成ファイルが取得されていることを確認しました(ログ形式を変更することにより)
これを理解するのを手伝ってください。
私のクラスパスには
- slf4j-api 1.6.1
- jul-to-slf4j 1.6.1
- log4j-over-slf4j 1.6.1
- ログバックコア 1.0.33
- logback クラシック 1.0.33
- jboss-logging 3.1.0.GA。
logback.xml と logback-test.xml の両方がクラスパスにあります。logback.xml には含まれて<root level="warn">
おり、それ以上の特殊化はありません