【问题标题】:ch.qos.logback.classic and slf4j-log4j12ch.qos.logback.classic 和 slf4j-log4j12
【发布时间】:2014-07-06 15:28:07
【问题描述】:

我在记录我的应用程序时遇到问题。应用程序使用 slf4j 和 logback 机制来实现日志记录。

记录器被初始化为

private static final Logger LOG = LoggerFactory.getLogger(Classname.class);

但有些无法生成日志。在调试过程中我发现错误

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/Users/xxx/.m2/repository/org/slf4j/slf4j-log4j12/1.7.5/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/xxx/.m2/repository/ch/qos/logback/logback-classic/1.0.13/logback-classic-1.0.13.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

然后我尝试从应用程序所在的父 pom.xml 文件中删除 slf4j-log4j12 绑定。但仍然无法生成日志。

然后我在应用程序iml文件中找到了以下条目

<orderEntry type="library" scope="RUNTIME" name="Maven: org.slf4j:slf4j-log4j12:1.7.5" level="project" />

当我删除该条目时,我的应用程序能够生成日志......目前我不知道使用哪个文件作为参考 iml 文件正在生成?所以如果我需要将 slf4j-log4j12 排除在我的项目中,我应该在 pom.xml 中删除它吗?

即使我在 pom.xml 中删除它也不会生成日志?

请告诉我应该如何解决无法生成日志的问题。

【问题讨论】:

  • 您是否设置了记录器配置?你有没有在你的 pom 中添加了对 logback 库的依赖?
  • Logback 配置已设置并在文件 logback.xml 中提供。也在 pom 文件中排除 xxx/xxx/Logging.class
  • 您必须从使用库的依赖项中排除使用 gav 坐标的依赖项。不是类名。
  • 我猜 commons-logging 已经为 commons-logging 添加了我是否必须排除其他任何东西 commons-loggingcommons-logging
  • 问题是,你必须在你的类路径中使用 slf4j 库。一个是log4j,另一个是logback。删除一个。

标签: java maven slf4j logback


【解决方案1】:

首先,您走在正确的轨道上。您需要使用 POM 排除 slf4j-log4j12 和 commons-logging。

iml文件是Intelli生成的,需要通过intellij重新导入pom来更新依赖。最好的办法是将 intellij 设置为在 pom.xml 更改时始终自动重新导入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-20
    • 2017-02-06
    • 1970-01-01
    • 2023-03-21
    • 2018-05-14
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多