使用SLF4J和LOGBACK (一 : 基本使用)

 1.SLF4J是什么?html

slf4j是一个日志门面,它不是具体的日志实现框架,而是提供了通用的日志接口,按我的理解来讲,是经过接口实现多态,来知足应用在不一样日志框架间切换的需求。
例如在程序中咱们须要记录日志,使用SLF4J提供的接口来调用:
Logger logger = LoggerFactory.getLogger(Class.class);
logger.info();

上边两行代码中的Logger和LoggerFactory对象均来自SLF4J包中。api

具体的日志实现框架,咱们能够选择LOG4J,LOGBACK等做为日志的具体实现,可是日志的打印输出统一使用SLF4J提供的接口。框架

这样在切换日志实现框架时,因为日志打印相关操做都是使用slf4j的接口,和具体的实现无关。只须要替换日志实现框架便可轻松实现日志框架的替换。
 
2.LOGBACK:
logback是一个日志记录框架,本文只介绍开发经常使用的配置和使用,并无很深刻的说明,有需求的能够看官网文档,很详细的介绍了logback,
本文也是从官网的文档中摘选出了开发经常使用的配置来讲明如何使用该框架记录日志
 
2.1 引入jar包:
使用logback须要引入相关jar包:slf4j-api.jar,logback-core.jar,logback-classic.jar。经过maven引用便可,很少说了。
 
2.2 测试类:
    
package chapters.introduction;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloWorld1 {
  public static void main(String[] args) {
    Logger logger = LoggerFactory.getLogger("chapters.introduction.HelloWorld1");
    logger.debug("Hello world.");
  }
}

上边的代码及其简单,main方法中使用了SLF4J的Logger对象打印了Hello world字符串,直接运行main方法将获得以下结果:maven

20:49:07.962 [main] DEBUG chapters.introduction.HelloWorld1 - Hello world.
上边这行输出中,第一个字段的时间是当前系统时间,第二个字段是运行方法所在的线程名称,第三个字段是日志级别
第四个字段是打印日志的类完整路径,- 以后的内容是具体的打印内容
我没作任何的配置,因此以上的输出格式其实就是logback默认的日志格式,日志的默认级别就是DEBUG
 
2.3 打印logback内部状态:
没作任何配置的状况下咱们也可使用,可是默认的格式和日志级别不必定是咱们想要的,若是咱们想定制须要如何写?
首先打印一下logback日志内部的状态看一下输出结果,修改一下上面的代码以下:
    
  public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger(HelloWorld1.class);
        logger.debug("Hello world.");
        LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
        StatusPrinter.print(lc);
    }

再次运行main方法将看到以下的输出:测试

 

能够看到截图中有三个Could NOT find,这说明在logback在运行时会按顺序找三个文件,可是都没有找到,最后一行Setting up default configuration代表使用默认的配置。
因此若是须要定制logback,只须要提供相应的文件便可。按顺序分别是:logback-test.xml,logback.groovy,logback.xml
那么默认的配置是什么?又在哪里?
答案是logback有个: BasicConfigurator类,这个类的配置就是logback为咱们提供的默认配置选项,有兴趣的能够去看看源码。
下一篇介绍logback的简单配置。
相关文章
相关标签/搜索