1、SpringBoot采用的日志
日志分为日志抽象层与日志实现层。类似于JDBC与数据库的形式,不管连接的是什么数据库,只需将JDBC中对应的数据库信息修改即可。这里的日志抽象层是类似JDBC的效果,只需修改相应的日志实现层的信息即可。
常用日志抽象层分类:
JCL
SLF4j
jboss-logging
常用日志实现层分类:
Log4j
JUL
Log4j2
Logback
SpringBoot底层采用的是Spring框架,Spring默认采用JCL。但SpringBoot选用SLF4j与logBcak来实现日志的输出。
2、使用SLF4j
(1)官网地址:https://www.slf4j.org/
(2)使用手册地址: https://www.slf4j.org/manual.html
(3)手册地址中有一个HelloWorld示例:
【需要导入的jar包】
slf4j的jar包,以及其实现层的jar包。
【HelloWorld.java】
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class HelloWorld {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(HelloWorld.class);
logger.info("Hello World");
}
}
(4)常用模式:

3、使用 SLF4J统一不同框架的日志
(1)地址: https://www.slf4j.org/legacy.html
(2)步骤:
step1:将系统中其他原有的日志框架先排除出去。
step2:使用一个中间包去替换原有的jar包。
step3:导入slf4j 以及 相关实现层的 jar 包。
(3)比如现在想要将Spring框架的日志(commons-logging)转为(SLF4J+logback)。
首先使用 jcl-over-slf4j.jar 去替换commons-logging.jar包。然后需要导入 SLF4J与logback相关的jar包。
4、SpringBoot的日志
(1)SpringBoot底层使用slf4j + logback 记录日志。
(2)SpringBoot会将不同的日志框架转为slf4j(使用中间替换包,先将原jar包从依赖关系中剔除,再添加新的jar包依赖)。
在IDEA中找到<dependencies>标签,右击选中Diagrams,接着选中 Show Dependencies,可以看到当前所有依赖信息组成的图。


找到日志相关信息,可以看到SpringBoot底层会将不同的日志框架转为slf4j 。

5、SpringBoot如何使用日志
(1)获得日志记录器,使用 LoggerFactory.getLogger()。
(2)日志的级别:
由低到高:trace < debug < info < warn < error
根据不同的级别输出日志信息。对于某个级别,输出比此级别高以及此级别的日志。
其中 SpringBoot 默认使用 info 级别的信息。即 输出 info , warn, error 等日志信息。
【在test目录下的一个测试类】
package com.example.helloworld;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloworldApplicationTests {
Logger logger = LoggerFactory.getLogger(getClass());
@Test
public void contextLoads() {
logger.trace("=== trace ===");
logger.debug("=== debug ===");
logger.info("=== info ===");
logger.warn("=== warn ===");
logger.error("=== error ===");
}
}

(3)设置日志打印级别:
可以在配置文件(application.properties)中使用 logging.lever 去设置级别。

(4)选择日志打印的位置:
在配置文件中,如果存在logging.file 且 文件名为 my.log, 则会输出日志到当前项目路径下的 my.log文件中。
在配置文件中,如果存在logging.path 且文件名为 /spring/log, 则会输出到指定目录的spring.log文件中。
在配置文件中,若上述两个都未指定,则默认输出到控制台。
在配置文件中,若上述两个均存在,则以logging.file为主。
(5)设置日志打印的格式:
在配置文件中,使用 logging.pattern.console 可以指定打印在控制台的日志格式。
使用 logging.pattern.file 可以指定打印在指定文件中的日志格式。
【日志格式:】
%d : 表示日期时间。
%thread :表示线程名。
%-5lever : 级别从左显示5个字符的宽度。
%logger[50] :表示logger名字最长为50个字符,否则按照点分割。
%msg : 表示日志消息。
%n :表示换行符。
【举例:】
logging.pattern.console = %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5lever %logger[50] -- %msg %n