问题
在写组件时,发现一引入组件就会报错。发现是组件引入的 slf4j-log4j12 依赖的问题。错误如下:
Caused by: java.lang.ClassCastException: org.slf4j.impl.Log4jLoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext
at com.ishansong.log.Loggers.<clinit>(Loggers.java:15)
... 48 more
原因是,使用组件的项目已经使用了 logback。如果使用 slf4j 框架的话,只能使用 logback 和 log4j 等其中一个实现,基本上不能两个同时存在。这个文章 也是相同的问题。
logback 和 log4j 好像也可以同时使用,java日志系统详解 文件最下部分有一个问题,就是这个问题。没有测试,不知道能不能行。
类似问题
上网看了一下文章,在日志组件这部分还有些复杂,东西很多。同一日志组件中,两种不同的桥接器,还不能同时使用。例如:log4j-over-slf4j 与 slf4j-log4j12
其它
关于 slf4j 和 各种实现的类型、具体意义,请参考下面的文章,写的挺不错的。