java - 选择日志记录提供商

标签 java logging log4j slf4j

我已将我的应用程序配置为将 slf4j 与 log4j 一起使用,但了解如何通过 slf4j 选择 JBoss 记录器:

org.jboss.logging [DEBUG] Logging Provider: org.jboss.logging.Log4jLoggerProvider.

我的应用程序使用 spring 和 hibernate,据我了解,hibernate 现在使用 JBoss 记录器而不是 slf4j。我有办法强制使用 slf4j 吗?或者更好的是,让我的日志记录调用与 API 无关?就目前而言,hibernate 和 spring 日志正确,但我的应用程序特定日志记录被忽略,因为它使用 slf4j API。

更新:记录相关的jar(由maven管理)包括:

  1. slf4j-api-1.6.1
  2. slf4j-parent-1.6.1
  3. slf4j-simple-1.6.1
  4. slf4j-log4j12-1.6.1
  5. jboss-logging-3.1.0.CR2
  6. log4j-1.2.12

谢谢。

最佳答案

您的类路径中有太多日志记录实现。

显然 Hibernate 使用 SLF4J:documentation

所以你应该删除以下 jar :

  • slf4j-simple-1.6.1(与 slf4j-log4j 冲突)
  • jboss-logging-3.1.0.CR2

我不太确定 slf4j-parent-1.6.1 是什么,您可以尝试使用或不使用它。

关于java - 选择日志记录提供商,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9316398/

相关文章:

java - 确定来自另一个 Java 应用程序的 Java 执行是否成功完成

amazon-web-services - 如何让自定义log4j.properties对AWS EMR集群上的Spark driver和executor生效?

java - 有没有办法覆盖 hadoop-hdfs 3.2.1 jar 的 log4j 1.2.17 到 log4j2 的传递依赖

java - 启动 .war 服务时 tomcat 8 失败

java - Fragment : Setting the class variables vs putting the Bundle as arguments in the Fragment 的工厂方法

java - 在 Windows/Linux/OSX 上提取完整文件名

java - 无法发送 JUL -> Logback

java - ejb有关角色和身份验证的安全性问题

Android perimision "user' s private information", "your personal information", "read sensitive log data"

java - 使用 log4j 的多个库