日志系统组件框架之版本兼容性
来源:互联网 发布:电视如何解除网络禁用 编辑:程序博客网 时间:2024/05/16 03:27
最近项目从 Maven 迁移至 Gradle ,在build.gradle 依赖配置中遇到日志系统版本兼容性问题(备注:Maven 中一切正常;( … );在解决过程中,随便梳理下日志系统下所有日志组件框架:slf4j-log4j、slf4j-simple、slf4j-jdk14、slf4j-nop、slf4j-jcl、logback-classic;
本文章从以下两方面进行描述:
- 日志系统六大组件介绍
- 六大组件各自体系与SLF4J-API版本兼容性
日志系统六大组件介绍
slf4j-log4j:
Binding for log4j version 1.2, a widely used logging framework. You also need to place log4j.jar on your class path
slf4j-simple:
Binding for Simple implementation, which outputs all events to System.err. Only messages of level INFO and higher are printed. This binding may be useful in the context of small applications.
slf4j-jdk14:
Binding for java.util.logging, also referred to as JDK 1.4 logging
slf4j-nop:
Binding for NOP, silently discarding all logging.
slf4j-jcl:
Binding for Jakarta Commons Logging. This binding will delegate all SLF4J logging to JCL.
logback-classic:
NATIVE IMPLEMENTATION There are also SLF4J bindings external to the SLF4J project, e.g. logback which implements SLF4J natively. Logback’s ch.qos.logback.classic.Logger
class is a direct implementation of SLF4J’s org.slf4j.Logger
interface. Thus, using SLF4J in conjunction with logback involves strictly zero memory and computational overhead.
以上内容请到官网查看:http://www.slf4j.org/manual.html
六大组件各自体系与SLF4J-API版本兼容性
由上图可以得出:
1) slf4j-api由 两个时期版本组成
slf4j-api分为 1.5.5 和 1.5.5之前版本 及 1.5.6和1.5.6之后版本,主要不同之处:
StaticLoggerBinder.java
1.5.5 And below 1.5.5
private
static
org.slf4j.impl.StaticLoggerBinder SINGLETON;
1.5.6 And above 1.5.6
/*** The unique instance of this class.**/privatestaticfinal StaticLoggerBinder SINGLETON = newStaticLoggerBinder(); /*** Return the singleton of this class.** @return the StaticLoggerBinder singleton*/publicstaticfinal StaticLoggerBinder getSingleton() {returnSINGLETON;}
如果日志组件框架版本与slf4j-api 不一致,很可能会抛异常:
Exception in thread
"main"
java.lang.IllegalAccessError: tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from
class
org.slf4j.LoggerFactory at org.slf4j.LoggerFactory.<clinit>(LoggerFactory.java:
60
)
2)slf4j-log4j、slf4j-simple、slf4j-jdk14、slf4j-nop、slf4j-jcl、logback-classic 与 slf4j-api 版本相匹配
slf4j-log4j、slf4j-simple、slf4j-jdk14、slf4j-nop、slf4j-jcl 这五大组件直接与slf4j-api 版本 相同,这个比较容易区分;
而 logback-classic 0.9.11之前 版本与 slf4j-api 1.5.5 之前 版本相对应,0.9.12之后 版本与 slf4j-api 1.5.6之后 版本相对应,这点经过本人测试得出;
- 日志系统组件框架之版本兼容性
- 日志框架和日志系统
- 日志框架和日志系统
- 日志分析系统框架
- 日志框架之LogBack
- 技术、组件、框架和系统
- 组件化系统框架-序言
- 组件化系统框架-分层
- Poco 日志 之 系统日志
- 日志框架和日志系统区别
- java日志框架与日志系统
- java日志框架与日志系统
- java 日志框架日志系统关系详解
- 构建SSH框架日志系统
- 构建SSH框架日志系统
- C#桌面框架版本及其组件
- Android进阶之在不同版本间兼容性处理
- IM 开发日志,C++版本框架
- 数字电路设计之算数右移的verilog实现
- 【HDU】2444 The Accomodation of Students 二分匹配
- mips架构下alsa结构声音移植笔记
- ArcGIS教程:面积制表
- hd 2190 悼念512汶川大地震遇难同胞——重建希望小学
- 日志系统组件框架之版本兼容性
- SQL Server 2008 R2 序列号 key 产品密钥
- iOS月薪10k以上知识大总结
- 【CSDN编程挑战】完全平方数的个数
- 英国情报机构授权开设“网络间谍”硕士专业!
- myeclipse下手动配置多个tomcat实例
- OpenStack Neutron解析
- (二叉堆,堆排序)
- Java序列化机制和原理