1. 什么是logback
Logback是作为流行的log4j项目的继承者,继承log4j遗留下来的地方。它的体系结构非常通用,可以适用于不同的环境。目前logback分为logback-core、logback-classic和logback-access三个模块。其中,Logback-core模块为其他两个模块奠定了基础。logback-classic是log4j的一个改进版本。而且,logback-classic完整的实现了SLF4J API,这样我们可以很方便的切换日志打印系统,如log4j,jdk logging等。logback官网
2. logback组成
- logback与log4j,log4j2类似,可分为Logger、appender及layout三个部分;
Logger:日志的记录器,把它关联到应用的对应的context上后,可用于存放日志对象,也可定义日志类型、级别。
Appender:用于指定日志输出的目的地,目的地可以是控制台、文件、数据库、 JMS和远程UNIX Syslog守护进程等。
Layout: 负责把日志事件转换成字符串,格式化的日志信息的输出。 - 每个 logger 都是一个单例,调用 LoggerFactory.getLogger 方法时,如果传入的 logger name 相同,获取到的 logger 是同一个实例。
- Appender 是绑定在 logger 上的,同时,一个 logger 可以绑定多个 Appender,一条信息可同时打印到不同的目的地。
- logger 有继承关系,因此一个 logger 打印信息时的 Appender 需要参考它的父亲和祖先。在 logback 中,默认情况下,如果一个 logger 打印一条信息,那么这条信息首先会打印至它自己的 Appender,然后打印至它的父亲和父亲以上的祖先的 Appender。
- Logger 可以被分配级别,若 logger没有被分配级别,那么它将从有被分配级别的最近的祖先那里继承级别。root logger 默认级别是 DEBUG。
- 日志打印级别: TRACE < DEBUG < INFO < WARN < ERROR。
3. logback配置
- maven依赖
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.0.11</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.11</version>
</dependency>
- logback配置方式
Ⅰ. xml配置
Ⅱ. groovy格式配置
Ⅲ. 编程式配置 - logback启动中获取配置的顺序:
3.1 在 classpath 中寻找 logback-test.xml文件
3.2 如果找不到 logback-test.xml,则在 classpath 中寻找 logback.groovy 文件
3.3 如果找不到 logback.groovy,则在 classpath 中寻找 logback.xml文件
如果上述的文件都找不到,则 logback 会使用 JDK 的 SPI 机制查找 META-INF/services/ch.qos.logback.classic.spi.Configurator 中的 logback 配置实现类,这个实现类必须实现 Configuration 接口,使用它的实现来进行配置
3.4 如果上述操作都不成功,logback 就会使用它自带的 BasicConfigurator 来配置,并将日志输出到 console