1. 回顾一下日志发展历史
==实现====
log4j: 第一个广泛认可的日志框架。 (apache)
jdk JUL: java.util.logging .
=====门面======
slf4j: 日志门面, 集成其他框架, 不实现日志功能。
jdk jcl: jakarta common logging 同样是日志门面, 较少用
====实现======
logback: 基于log4j 开发的, 性能是log4j的10倍。 springboot 默认使用的日志框架。
log4j2: apache的日志实现。
常用组合: slf4j + logback。
2. 配置文件
以下是 logback 的初始化步骤:
- logback 会在类路径下寻找名为 logback-test.xml 的文件。
- 如果没有找到,logback 会继续寻找名为 logback.groovy 的文件。
- 如果没有找到,logback 会继续寻找名为 logback.xml 的文件。
- 如果没有找到,将会通过 JDK 提供的 ServiceLoader 工具在类路径下寻找文件 META-INFO/services/ch.qos.logback.classic.spi.Configurator,该文件的内容为实现了
Configurator
接口的实现类的全限定类名。 - 如果以上都没有成功,logback 会通过 BasicConfigurator 为自己进行配置,并且日志将会全部在控制台打印出来。
最后一步的目的是为了保证在所有的配置文件都没有被找到的情况下,提供一个默认的(但是是非常基础的)配置。
如果没有指定配置文件, logback使用的就是下面的配置。
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
PatternLayoutEncoder
对模版 %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n 进行格式化。root logger 默认的日志级别为 DEBUG
。
3. 中文官网
非常详细的介绍。