LOGBack小结

来源:互联网 发布:软件耦合 编辑:程序博客网 时间:2024/05/18 02:40

之前一直用log4j,工作后接触到logback,顺便总结一下

参考http://blog.csdn.net/conquer0715/article/details/9365491

基础

SLF4J不是具体的日志解决方案,它只服务于各种日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统,并可以灵活切换。
首先了解一下SLF4J、Log4j和LOGBack的区别:
首先,这3个都是同一个作者开发的,其中LOGBack用来替代log4j,SLF4J用来替代Commons-logging。

Commons-logging
Apache最早提供的日志门面接口。避免和具体的日志方案直接耦合。类似于JDBC 的api 接口,具体的JDBC driver 实现由各数据库提供商实现。通过统一接口解耦,不过其内部也实现了一些简单日志方案。

SLF4J
全称为Simple Logging Facade for JAVA:java简单日志门面。SLF4J提供一个日志接口,你可以使用不同的类来实现该接口,Log4j和LogBack就是不同的实现。

Log4j
Apache的一个开放源代码项目,使用Log4j可以控制日志信息输送目的地、、输出格式、生成过程等。是一种经典的日志解决方案。内部把日志系统抽象封装成Logger 、appender 、pattern 等实现。可以通过配置文件轻松的实现日志系统的管理和多样化配置。

LOGBack
Logback是另一个开源日记组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。其中logback-core是其它两个模块的基础模块,logback-classic是log4j的改良,logback-classic完整实现SLF4J API,使你可以方便地更换成其它日志系统如log4j或JDK14 Logging。logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。

Log4J vs. LOGBack
LOGBack作为一个通用可靠、快速灵活的日志框架,将作为Log4j的替代和SLF4J组成新的日志系统的完整实现。总的来说就是速度更快,性能更好。官网上称LOGBack在关键路径上执行速度是log4j 的10 倍,且内存消耗更少。具体优势见:http://logback.qos.ch/reasonsToSwitch.html
此外,LOGBack的所有文档都是免费提供的,不象Log4J那样只提供部分免费文档而需要用户去购买付费文档。

需要注意
使用日志配置的时候一定要明白需求,同时避免冲突。
如使用SLF4j 的时候为了避免冲突,一定要保障只有一种实现类jar包在里面。
有任意两个实现slf4j 的包同时出现,那就有可能酿就悲剧,你可能会发现日志不见了、或都打到控制台了。原因是这两个jar包里都有各自的org.slf4j.impl.StaticLoggerBinder,编译时候绑定的是哪个是不确定的。这个地方要特别注意!!!

用法小结

  1. 下载地址:
    slf4j: http://www.slf4j.org/download.html
    logback: http://logback.qos.ch/download.html

  2. 需要的配置文件和组件包,下面三个 jar 文件和一个 xml文件都是要放在项目的 ClassPath 上。
      slf4j-api-1.5.11.jar
      logback-core-0.9.20.jar
      logback-classic-0.9.20.jar
      logback.xml 或 logback-test.xml (类似于 log4j.properties/log4j.xml)
    Logback 先找 logback-test.xml,没有则找 logback.xml 文件,都找不到就使用 BasicConfigurator 基本配置,BasicConfigurator 就是相当于等会贴出的 logback.xml 文件内容的配置。这里我们用 logback.xml 配置文件,以前的 log4j.properties 文件可以用 PropertiesTranslator 转换成 logback.xml 文件内容。

0 0