谁能告诉我 slf4j-log4j 和 log4j-over-slf4j 之间的区别?在 Java Web 应用程序中使用哪个更标准?我目前在类路径上都有这两个,这会导致运行时异常,因为 Web 服务器正试图阻止StackOverFlowException
发生。
例外:
java.lang.IllegalStateException:
在类路径上检测到 log4j-over-slf4j.jar 和 slf4j-log4j12.jar
slf4j-log4j使用 log4j 作为 slf4j 的实现。
log4j-over-slf4j导致对 log4j API 的调用被“路由”到 slf4j。
两者都是可以使用的有效库,并且同样“标准”,这取决于项目。
一般来说,如果您的项目已经在使用 log4j,并且您没有能力将所有 log4j Loggers 更新为 slf4j Loggers;log4j-over-slf4j 是一个快速修复,可以立即开始使用 slf4j。
但是,如果您的项目是新项目或没有现有的日志记录机制并且您选择使用 slf4j,那么 slf4j-log4j 将是可行的方法,因为它只是指定 slf4j 应该绑定到 log4j。
话虽如此,我同意 c12 的评论。停止使用 log4j,而是使用 slf4j 和 logback。
在我的项目中,org.slf4j.impl.Log4jLoggerFactory
在
activemq-all-5.7.0.jar
不在 slf4j-log4j12.jar
异常消息误导了我