slf4j与LOGBack -- 学习笔记

slf4j和LOGBack是log4j的创建者Ceki Gülcü新创建出来的一个组合,它完全可以替代apache commons logging + log4j组合,并且在性能和架构方面有了不小的改进。

简介

slf4j(simple logging Facade for java)是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。
LOGBack,一个“可靠、通用、快速而又灵活的Java日志框架”。

优点

现如今,稍微有一点点规模的软件,都会使用日志。日志可以用来监控代码中变量变化,跟踪代码运行的轨迹,在开发环境中担当调试器作用,向控制台或文件输出信息。而apache common logging +  log4j的组合,在slf4j出现之前,是业界最流行的log框架组合。但是自从slf4j+LOGBack的组合出现后,有一些著名的开源项目如,Apache的某些项目,Hibernate等都已经转向了slf4j + LOGBack的组合。

它们这样的选择,也印证了slf4j + LOGBack组合的优越性。这对组合大致有以下一些优点:

1. 支持更多的log框架
  同样作为log门面,apache common logging框架主要是提供在log4j和java.util.logging之间的切换,而slf4j则可以支持更多的log框架,而且即便未来有了新的log框架,也可以通过写几个简单的类就全部切换过去

2. 更佳的性能
  某些关键操作,比如判定是否记录一条日志语句的操作,其性能得到了显著的提高。这个操作在LOGBack中需要3纳秒,而在Log4J中则需要30纳秒。LOGBack创建记录器(logger)的速度也更快:13毫秒,而在Log4J中需要23毫秒。更重要的是,它获取已存在的记录器只需94纳秒,而Log4J需要2234纳秒,时间减少到了1/23。跟JUL相比的性能提高也是显著的”。

3. 支持参数化配置
  避免了之前为了减少字符串拼接的性能损耗而不得不写的if(logger.isDebugEnable()),现在你可以直接写:logger.debug("current user is: {}", user)。拼装消息被推迟到了它能够确定是不是要显示这条消息的时候,但是获取参数的代价并没有幸免。

4. 其他的一些优点
  支持OSGi,LOGBack的配置文件可以条件化配置等。

slf4j的jar文件分类说明

slf4j现在发布的jar文件大致可以分为三类。
A. slf4j模块本身 slf4j-api-{version}.jar slf4j-ext-{version}.jar
B. slf4j到各log框架或者其他log门面的实现 slf4j-{log framework abbreviation}-{version}.jar
C. 其他log框架或门面到slf4j的bridge      {log framework abbreviation}-slf4j-{version}.jar

使用说明

1. 调用slf4j的接口,使用log4j,java.util.logging等log框架
  代码中是要调用slf4j的方法来写log,基本上没有学习曲线,因为slf4j的接口和log4j等框架的接口是非常类似的。无非就是LogFactory和Log的使用而已。
  而jar包之间的调用关系如图一所示:
 
           图一:slf4j常规用法的jar文件之间的调用关系
 
2. 当前使用的是apache common logging + log4j组合,想不修改代码切换到slf4j + logback
  代码不需要做任何修改,只要把apache common logging和log4j的jar包拿掉,增加slf4j和logback的jar,并把log4j的配置文件转换为logback的配置文件即可。
  具体的jar包之间的调用关系,如图二所示:

           图二:commong logging + log4j切换为slf4j的jar文件之间的调用关系

简单总结

个人看法,slf4j确实是一个非常优秀的框架,但是我们在选择的时候也要先考虑考虑。
  ★ 如果是写新的极小的系统,基本上不会有切换log系统的必要性,直接使用java.util.logging的接口就可以,方便快捷,配置简单。
  ★ 如果是写新的大型系统的话,应该考虑使用slf4j。
  ★ 如果是OSGi系统的话,slf4j是必选的。
  ★ 如果是维护现有系统的话,根据实际情况,确实有必要的话(比如说现有系统性能方面不佳;或者说系统中存在多种log系统,想要整合等),就要替换为slf4j。反之,则不需要替换,等以后真的有需求再替换也很简单的。

参考资料

1. http://www.slf4j.org   SLF4J官方网站
2. http://logback.qos.ch  LOGBack官方网站
3. http://hypgr.iteye.com/blog/374457  SLF4J+logBack, 日志领域中的新秀
4. http://xiayingjie.iteye.com/blog/828498  调试日志之slf4j+logback
5. http://baike.baidu.com/view/1895694.htm  slf4j
6. http://www.blogjava.net/AstroQi/archive/2010/11/17/338255.html  SLF4J + logBack

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值