一、SLF4J定义
slf4j,即(Simple Logging Facade for Java,简单门面日志)。它是对所有日志框架制定的一种规范、标准、接口,并不是一个框架的具体的实现,它只服务于各种各样的日志系统。
slf4j就是设计模式之门面(外观)模式的典型应用。
二、SpringBoot日志
结论:Springboot默认使用logback来管理日志
先看一个简单springboot项目的依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>logg</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>logg</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
其中只包含一个spring-boot-starter-web依赖,我们打开依赖图来看,如下
放大了如下:
springboot日志系统中包含三部分依赖,一是slf4j,二是logback,三是log4j,
其中springboot默认使用的slf4j+logback的日志系统,故当使用logback时无需引入额外的jar包。
三、logback的配置文件详解
其中,springboot默认采用彩色日志,但是若不在logback配置文件中显示声明则不会使用
<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration scan="true" scanPeriod="10 seconds">
<!--
springboot默认使用彩色日志,但是指定logback配置文件后,默认的彩色日志文件失效,因此需在配置文件中显示声明
这里引入springboot默认的配置文件(位于spring-boot-2.4.1.jar包中),
并在后面控制台输出日志中使用默认配置文件的CONSOLE_LOG_PATTERN属性,来输出彩色日志,如下51行所示
-->
<include resource="org/springframework/boot/logging/logback/base.xml" />
<!-- 彩色日志
此段内容与base.xml里引用的defaults.xml中的内容一致,故二者选其一即可
-->
<!-- 彩色日志依赖的渲染类 -->
<!-- <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
<conversionRule conversionWord=