前言:本篇博客主要介绍如何把主流的日志框架快速整合到目前的SpringBoot框架中,对六种日志等级进行介绍以及使用方法。
目录
一、日志级别
1、TRACE
2、DEBUG
3、INFO
4、WARN
5、ERROR
6、FATAL
二、导入pom.xml依赖
三、application.yml配置
四、logback-spring.xml配置
五、单元测试
六、日志文件
七、Gitee源码
一、日志级别
日志级别优先程度:FATAL>ERROR>WARN>INFO>DEBUG>TRACE。
1、TRACE
最低级别的日志,用于记录程序执行的细节和内部状态,默认情况下该日志不会被输出。
2、DEBUG
该级别的日志,默认情况下会打印一些调试时候的信息到终端进行输出,并不会归档在日志文件当中。
3、INFO
该级别的日志,用于输出程序正常运行状态输出的信息,例如程序的初始化,该日志是默认输出的,除非修改配置才不会进行输出到日志中。
4、WARN
该级别的日志,用于输出程序处理中遇到一些非法数据或者某些可能的异常情况,这种错误不会影响到程序的正常运行。
5、ERROR
该级别的日志,用于记录程序发生了一些错误或异常,但是不会影响到整个程序的继续运行,最好尽快处理,有可能会出现更严重的后果。
6、FATAL
该级别的日志,用于输出严重的错误信息,表示程序已经无法正常运行,需要立即处理。
目前常用的就四个级别,由高到低分别是ERROR、WARN、INFO、DEBUG,在SpringBoot框架中可以控制打印输出的日志级别,例如配置成了INFO级别的日志,那么在INFO级别以下的日志将不会被打印出来。
二、导入pom.xml依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
三、application.yml配置
对于com.example包中所有的类,日志级别为info,只会打印info级别及以上的日志。
对于org.springframework包中所有的类,日志级别为warn,只会打印warn级别及以上的日志。
对项目自己的代码(com.example),设置一个较低的日志级别(info),这样可以打印更多的日志用于调试和定位问题。
对第三方框架(org.springframework),设置一个较高的日志级别(warn),只打印关键信息,不打印太多的日志减少日志量。
logging:
level:
com.example: info
org.springframework: warn
四、logback-spring.xml配置
所有的配置信息以及注释都在代码中体现了,复制即可
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="10 seconds">
<contextName>logback</contextName>
<!--日志文件的保存路径,首先查找系统属性-Dlog.dir,如果存在就使用其;否则,在当前目录下创建名为logs目录做日志存放的目录 -->
<property name="LOG_HOME" value="${log.dir:-logs}" />
<property name="log.path" value="log"/>
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
<conversionRule conversionWord="wex"
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
<conversionRule conversionWord="wEx"
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
<!-- 彩色日志格式 -->
<property name="CONSOLE_LOG_PATTERN"
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!--输出到控制台-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
<!-- 设置字符集 -->
<!--<charset>UTF-8</charset>-->
</encoder>
</appender>
<!--输出到文件-->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/${log.path}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日期切分-->
<fileNamePattern>${LOG_HOME}/${log.path}.%d{yyyy-MM-dd}.log</fileNamePattern>
<!--保留30天-->
<maxHistory>30</maxHistory>
<totalSizeCap>1GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!--日志级别-->
<root level="info">
<appender-ref ref="console"/>
<appender-ref ref="file"/>
</root>
<!-- 包级别 打印sql,level改成debug-->
<logger name="org.hibernate.SQL" level="info" additivity="false">
<appender-ref ref="console"/>
<appender-ref ref="file"/>
</logger>
</configuration>
五、单元测试
在类上面需要打上@Slf4j注解,这个注解是lombok提供的。
@SpringBootTest
@Slf4j
class LogbackApplicationTests {
@Test
void contextLoads() {
log.debug("debug级别日志");
log.info("info级别日志");
log.warn("warn级别日志");
log.error("error级别日志");
}
}
控制台输出的结果
六、日志文件
会产生一个.log文件。
具体打印内容如下
七、Gitee源码
SpringBoot整合logback日志