hibernate - 当日志来自 jboss-logging 时忽略 logback <logger> 级别

标签 hibernate logging logback jboss-logging

我的网络应用程序(部署在 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] DEBUG org.jboss.logging - Logging Provider: org.jboss.logging.Slf4jLoggerProvider

logback-test 16:47:04.244 [http-bio-8080-exec-5] DEBUG o.h.cfg.annotations.EntityBinder

logback-test 10:00:11.911 [localhost-startStop-1] INFO rest.helpers.MyApplication

对于来自 jboss (o.h.cfg.annotations.*) 的消息,级别设置为信息,但会打印一条调试消息。当我直接使用 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() Aug 2, 2013 10:22:26 AM org.glassfish.jersey.server.ApplicationHandler initialize INFO: Initiating Jersey application

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 - Logging Provider: 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
  • logback-核心 1.0.33
  • logback-classic 1.0.33
  • jboss-logging 3.1.0.GA。

logback.xml 和 logback-test.xml 都在类路径中。 logback.xml 包含 <root level="warn">并且没有进一步的特化

最佳答案

我在使用 freemarker 时遇到了同样的问题,但是在我的例子中,freemarker 没有使用 log4j-over-slf4j 桥,而是直接使用了 log4j(我在不知道(通过 Maven 依赖项)的情况下在我的类路径中使用了它)。

当我告诉 logback 记录到一个文件并且 freemarker 日志仍然到达标准输出时,我发现了这个问题。

解决方案是从我使用的 Maven 库中明确排除 log4j 依赖项。

关于hibernate - 当日志来自 jboss-logging 时忽略 logback <logger> 级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18022955/

相关文章:

mysql - 无法使用 Xampp 安装 MySQL

java - 使用 SLF4J 桥接 JUL 不起作用

java - logback 没有记录到文件

c++ - Boost Log - 为什么不编译?

java - @ManyToOne 错误 - JPA/Hibernate 分离实体传递到持久化

java - 使用 Hibernate 处理不同的用户类型

java - HQL 无法使用多个值 "in"

logging - java中多线程环境中非常快的日志记录

Spring Boot 多个日志文件

hibernate - 使用正则表达式语句在 hibernate 中使用 createSQLQuery 获取计数(*)