常用日志框架
来源:互联网 发布:企业站源码 编辑:程序博客网 时间:2024/06/14 11:47
1. 简述
现在开源框架日益丰富,经常存在着在一个项目中,不同的版本,不同的框架共存。导致日志输出异常混乱。
其中有一些标准通用接口,标准实现,各种桥接器的存在。
接口:将所有日志实现适配到了一起,用统一的接口调用。
实现:目前主流的日志实现
桥接适配:用于将slf4j和commons-logging连接;slf4j和log4j连接。。。。。。
slf4j接口主要有Logger、LoggerFactory;
commons-logging接口主要有Log、LogFactory;
第一步都是获得factory,第二步通过factory获得log;
jcl即为jakarta commons-logging;
2. 常用日志框架组合
2.1 commons-logging+log4j
经典的一个日志实现方案。出现在各种框架里。如spring、ibatis等等。直接使用log4j即可满足我们的日志方案。但是一般为了避免直接依赖具体的日志实现,一般都是结合commons-logging来实现。常见代码如下:
import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;private static Log logger = LogFactory.getLog(CommonsLoggingTest.class);
2.2 Commons-logging+log4j+slf4j
如果在原有commons-logging系统里,要迁移到slf4j,也是可以做到的。原理使用到了上述commons-logging加载的第二点。需要引入jcl-over-slf4j-1.5.6.jar。这个jar包提供了一个桥接,让底层实现是基于slf4j。原理是在该jar包里存放了配置
METAINF/services/org.apache.commons.logging.LogFactory=
org.apache.commons.logging.impl.SLF4JLogFactory,而commons-logging在初始化的时候会找到这个serviceId并把它作为LogFactory。
slf4j再装载具体日志实现类。
2.3 我们的日志组合方式
目前依赖的是c3p0:c3p0:0.9.1.2,默认优先使用log4j,其次使用c3p0自带实现;无法直接适配到slf4j;
2.4 注意点
假如在 CLASS_PATH 里同时放置 log4j-over-slf4j.jar和 slf4j-log4j12-version.jar ,日志会被踢来踢去,最终进入死循环。
3. commons-logging简介
3.1 LogFactory实例化:
通过加载不同的LogFactory可以适配到不同的日志框架中
1)查询org.apache.commons.logging.LogFactory属性设置
2) 查询classpath下的 META-INF/services/org.apache.commons.logging.LogFactory文件
3) 查询classpath下的commons-logging.propertites,如果找到则按其中的配置加载
4) 加载默认实现LogFactoryImpl
3.2 Log实例化:
加载默认实现LogFactoryImpl后,通过加载不同的Log可以适配到不同的日志框架中
通过不同的xxxxLogger加载不同的Log:如果能找到Log4j实现则加载Log4j;如果没有则使用Jdk14Logger;如果再没有使用Jdk13LumberjackLogger;如果再没有使用默认SimpleLog实现。
4. slf4j实现
原理是slf4j会在编译时会绑定 org.slf4j.impl.StaticLoggerBinder;
该类里面实现对具体日志方案的绑定接入。
任何一种基于slf4j的实现都要有一个这个类。
如果有任意两个实现slf4j 的包同时出现,那就有可能酿就悲剧。。。
下图为logback包结构
5. log4j0-over-slf4j适配实现方式
- java 常用日志框架
- 常用日志框架
- Java常用日志框架了解
- Java常用日志框架介绍
- Java常用日志框架介绍
- Java常用日志框架及实现
- Java常用日志框架基础介绍
- Java程序员最常用的8个Java日志框架
- Java程序员最常用的8个Java日志框架
- Java程序员最常用的8个Java日志框架
- Java程序员最常用的8个Java日志框架
- java程序员最常用的8个日志框架
- Java程序员最常用的8个Java日志框架
- Java程序员最常用的8个Java日志框架
- Java常用的日志框架对比和深入分析
- Java程序员最常用的8个Java日志框架
- java中常用的日志框架-logback和log4j
- Java常用的日志框架对比和深入分析
- 高斯消元法(二):高斯消元法原理
- 关于linux的export命令和shell变量的生命周期,环境变
- H盘显示由于IO设备错误,无法运行此项请求要如何办啊
- 自执行函数
- gstreamer插件简介
- 常用日志框架
- 全国淘宝村数量已超2100个 阿里巴巴打造乡村振兴新样本
- 深度学习 21天实战caffe
- 请求链接参数Base64加解密
- windows服务器之间自动传输问题解决过程
- groovy操作map,json
- Tactile sensor lets robots gauge objects’ hardness and manipulate small tools
- 会场安排 最少用几个会场 贪心
- 软件项目版本号的命名规则及格式