1. 首页
  2. 编程语言
  3. Java
  4. 详解log4j-over-slf4j与slf4j-log4j12共存stack overflow异常分析

详解log4j-over-slf4j与slf4j-log4j12共存stack overflow异常分析

上传者: 2021-12-25 20:13:28上传 PDF文件 402.84 KB 热度 9次

log4j-over-slf4j和slf4j-log4j12是跟java日志系统相关的两个jar包,当它们同时出现在classpath下时,就可能会引起堆栈溢出异常。异常信息大致如下(摘自slf4j官网文档。分析这个异常出现的具体原因之前,有必要先快速了解一下现有的Java日志体系。最早的日志门面接口是commons-logging,但目前最受欢迎的是slf4j。说白了,所谓“桥接器”,不过就是对某套API的伪实现。这种实现并不是直接去完成API所声明的功能,而是去调用有类似功能的别的API。以左上角第一种情形为例,当slf4j底层桥接到logback框架的时候,上层允许桥接回slf4j的日志框架API有log4j和jul。需要注意的是这里不包含logback API到slf4j API的转调,因为logback本来就是slf4j API的实现。看完三种情形以后,会发现几乎所有其他日志框架的API,包括jcl的API,都能够随意的转调回slf4j。

用户评论