【发布时间】: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-logging commons-logging -
问题是,你必须在你的类路径中使用 slf4j 库。一个是log4j,另一个是logback。删除一个。