10

谁能告诉我 slf4j-log4j 和 log4j-over-slf4j 之间的区别?在 Java Web 应用程序中使用哪个更标准?我目前在类路径上都有这两个,这会导致运行时异常,因为 Web 服务器正试图阻止StackOverFlowException发生。

例外:

java.lang.IllegalStateException:
在类路径上检测到 log4j-over-slf4j.jar 和 slf4j-log4j12.jar

4

2 回答 2

24

slf4j-log4j使用 log4j 作为 slf4j 的实现。

log4j-over-slf4j导致对 log4j API 的调用被“路由”到 slf4j。

您不能同时使用这两个 JAR。

两者都是可以使用的有效库,并且同样“标准”,这取决于项目。

一般来说,如果您的项目已经在使用 log4j,并且您没有能力将所有 log4j Loggers 更新为 slf4j Loggers;log4j-over-slf4j 是一个快速修复,可以立即开始使用 slf4j。

但是,如果您的项目是新项目或没有现有的日志记录机制并且您选择使用 slf4j,那么 slf4j-log4j 将是可行的方法,因为它只是指定 slf4j 应该绑定到 log4j。

话虽如此,我同意 c12 的评论。停止使用 log4j,而是使用 slf4j 和 logback。

于 2013-08-19T18:21:50.257 回答
2

在我的项目中,org.slf4j.impl.Log4jLoggerFactory

activemq-all-5.7.0.jar

不在 slf4j-log4j12.jar

异常消息误导了我

于 2013-09-30T10:35:47.520 回答