我的 web 应用程序(部署在 tomcat 7 上)正在使用 hibernate 4.2,它使用 jboss-logging 进行日志记录。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] 调试 org.jboss.logging - 日志提供程序:org.jboss.logging.Slf4jLoggerProvider
logback-test 16:47:04.244 [http-bio-8080-exec-5] 调试 ohcfg.annotations.EntityBinder
logback-test 10:00:11.911 [localhost-startStop-1] 信息 rest.helpers.MyApplication
对于来自 jboss (ohcfg.annotations.*) 的消息,级别设置为 info,但会打印一条调试消息。当我直接使用 slf4j (rest.helpers.*) 时,它会正确过滤掉我的调试消息,并打印我的信息消息。
现在,如果根日志级别设置为“无”,允许一些调试消息将打印所有这些:
<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 org.glassfish.jersey.server.ApplicationHandler 初始化信息:启动 Jersey 应用程序
logback-test 10:22:26.253 [localhost-startStop-1] 信息 rest.helpers.MyApplication
logback-test 10:22:42.995 [http-bio-8080-exec-5] 调试 org.jboss.logging - 日志提供程序:org.jboss.logging.Slf4jLoggerProvider
logback-test 10:22:43.025 [http-bio-8080-exec-5] 调试 org.hibernate.type.BasicTypeRegistry
我不允许 org.hibernate 调试消息,为什么会出现?我验证了正确的配置文件(通过更改日志格式)
请帮助我理解这一点。
我的类路径包含
- slf4j-api 1.6.1
- 七月到 slf4j 1.6.1
- log4j-over-slf4j 1.6.1
- logback 核心 1.0.33
- logback-经典 1.0.33
- jboss 日志记录 3.1.0.GA。
logback.xml 和 logback-test.xml 都在类路径中。logback.xml 包含<root level="warn">
并且没有进一步的专门化