打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用Slf4 j取代系统已有的 Apache Common-Logging 实现日志

Apache Common-Logging是广泛使用的Java日志门面库。我以前一直都使用它和log4j编写日志。
Apache Common-Logging通过动态查找的机制,在程序运行时自动找出真正使用的日志库。
Apache Common-Logging一直都运作得很好。直到最近,我写OSGI插件时,它不能工作了。
原因是Apache Common-Logging使用了ClassLoader寻找和载入底层的日志库。而OSGI中,不同的插件使用自己的ClassLoader。
一个线程的ClassLoader在执行不同的插件时,其执行能力是不同的。
OSGI的这种机制保证了插件互相独立,然而确使Apache Common-Logging无法工作!

解决之道是使用新的日志门面库Slf4j。
Slf4j库类似于Apache Common-Logging。但是,他在编译时静态绑定真正的Log库。使用Slf4j时,如果你需要使用某一种日志实现,那么你必须选择正确的Slf4j的jar包的集合。
这确实麻烦了一点,但总算可以在OSGI中开发日志了。

其实,这一点点工作也不算麻烦。

使用CommonLog接口而实际由Slf4j和Log4j实现的过程
1,项目中照常使用

12
import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;

编写日志。

2,仍然在src下使用log4j.properties文件进行配置。

3,使用的所有jar文件:
1)log4j-1.2.15.jar 这是log4j的库。 Slf4j并不改变这个底层实现库。
2)slf4j-api-1.5.2.jar 这是Slf4j库。
3)slf4j-log4j12-1.5.2.jar 这包含Log4j的适配器和静态绑定log4j底层实现。
4)jcl-over-slf4j-1.5.2.jar 这提供了Commons-Logging接口,以及使用common-loggin的接口,底层还是由SLF4J来决定哪种实现机制 。

这里,我们需要使用Log4j的原生库,但是不需要Commons-Logging的原生库。
OK,把上面这4个jar包复制到lib下,导入项目中,就可以像以往一样继续使用Apache Common-Logging编写日志了。
如果你喜欢使用slf4j的门面类,或者非log4j的日志实现库。只需要像上面把需要的jar包扔进自己的项目即可!

项目日志系统将会扔掉commons-logging和log4j,使用SLF4J全面接管,无障碍迁移。
优点:

  • 超超超低依赖性
  • 透明切换不同是日志实现方式
  • 编译器绑定底层实现的方式,不会有classloader问题
  • 性能更佳
  • 已经Hibernate、Jetty、Spring-OSGi、Tapestry等项目中使用
  • 完善又免费的文档

各个jar包功能:

  • slf4j-api-1.4.3.jar - 一定是要的,直接支持logback实现
  • jcl104-over-slf4j-1.4.3.jar - 使用common-loggin的接口,底层还是由SLF4J来决定哪种实现机制
  • slf4j-jcl-1.4.3.jar - 使用SLF4J的接口,底层由common-loggin实现(不能和jcl104-over-slf4j-1.4.3.jar同时使用)
  • slf4j-log4j12-1.4.3.jar - 使用SLF4J的接口,底层由log4j实现
  • slf4j-jdk14-1.4.3.jar - 使用SLF4J的接口,底层由java自身的日志系统实现

语法:

1234567891011
import org.slf4j.Logger;import org.slf4j.LoggerFactory; public class Test {    final Logger logger = LoggerFactory.getLogger(Test.class);     public void hi() {        // 不再需要log.isDebugalbe(),代码更简洁        logger.debug("hello {}", "amsz");    }}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
log4j的有关jar包总结
Java日志框架:SLF4J, Apache Common
slf4j的包使用说明
mybatis – MyBatis 3(日志相关,还比较清楚)
Java常用日志框架介绍
Java日志框架梳理-Java日志框架总览
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服