SpringBoot源码深度解析(五)springBoot 日志管理

SpringBoot 源码深度解析

第四章 springBoot 日志管理


前言

这一章主要介绍springBoot 日志管理


一、日志框架介绍

在项目的开发中,日志是必不可少的一个记录事件的组件,不管是记录运行情况还是追踪线上问题,都离不开对日志的分析,所以也会相应的在项目中实现和构建我们所需要的日志框架。
而市面上常见的日志框架有很多,比如:JCL、SLF4J、Jboss-logging、jUL、log4j、log4j2、logback等等,我们该如何选择呢?
通常情况下,日志是由一个抽象层+实现层的组合来搭建的。
在这里插入图片描述
Spring 框架选择使用了 JCL 作为默认日志输出。而 Spring Boot 默认选择了 SLF4J 结合 LogBack

二、SLF4J 的使用

在开发的时候不应该直接使用日志实现类,应该使用日志的抽象层。具体参考 SLF4J 官方。 SLF4J 官方给出了简单示例。
首先要为系统导入 SLF4Jjar .
下图是 SLF4J 结合各种日志框架的官方示例,从图中可以清晰的看出 SLF4J API 永远作为日志的门面,直接应用与应用程序中。
在这里插入图片描述
注意:由于每一个日志的实现框架都有自己的配置文件,所以在使用 SLF4j 之后,配置文件还是要使用实现日志框架的配置文件。

三、统一日志框架的使用

一般情况下,在项目中存在着各种不同的第三方 jar ,且它们的日志选择也可能不尽相同,显然这样是不利于我们使用的,那么如果我们想为项目设置统一的日志框架该怎么办呢?

  1. 排除系统中的其他日志框架。
  2. 使用中间包替换要替换的日志框架。
  3. 导入我们选择的 SLF4J 实现。

四、日志框架的使用

Spring Boot 默认已经使用了 SLF4J + LogBack . 所以我们在不进行任何额外操作的情况下就可以使用 SLF4J + Logback 进行日志输出。
编写 Java 测试类进行测试。

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; 

/**
 * 测试日志输出, 
 * SLF4J 日志级别从小到大trace,debug,info,warn,error 
**/ 
@RunWith(SpringRunner.class) 
@SpringBootTest 
public class LogbackTest {

Logger logger = LoggerFactory.getLogger(getClass()); 

@Test 
public void testLog() { 
	
	logger.trace("Trace 日志..."); 
	logger.debug("Debug 日志..."); 
	logger.info("Info 日志..."); 
	logger.warn("Warn 日志..."); 
	logger.error("Error 日志..."); 
	
	} 
	
}

已知日志级别从小到大为 trace < debug < info < warn < error . 运行得到输出如下。由此可见 Spring Boot 默认日志级别为 INFO.

2020-11-16 19:58:43.094 INFO 39940 — [ main]
com.lagou.Springboot01DemoApplicationTests : Info 日志…
2020-11-16 19:58:43.094 WARN 39940 — [ main]
com.lagou.Springboot01DemoApplicationTests : Warn 日志…
2020-11-16 19:58:43.094 ERROR 39940 — [ main]
com.lagou.Springboot01DemoApplicationTests : Error 日志…

从上面的日志结合 Logback 日志格式可以知道 Spring Boot 默认日志格式是

%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n

%d{yyyy-MM-dd HH:mm:ss.SSS} 时间

%thread 线程名称

%-5level 日志级别从左显示5个字符宽度

%logger{50} 类名

%msg%n 日志信息加换行

五、自定义日志输出

可以直接在配置文件编写日志相关配置

# 日志配置 
# 指定具体包的日志级别 logging.level.com.lagou=debug 
# 控制台和日志文件输出格式 logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n 
# 日志输出路径,默认文件spring.log logging.file.path=spring.log #logging.file.name=log.log

在这里插入图片描述

六、替换日志框架

因为 Log4j 日志框架已经年久失修,原作者都觉得写的不好,所以下面演示替换日志框架为 Log4j2 的方式。根据官网我们 Log4j2logging 需要二选一,因此修改 pom如下:

<dependency> 
	<groupId>org.springframework.boot</groupId> 
	<artifactId>spring-boot-starter-web</artifactId> 
	<exclusions> 
	<exclusion> 
	<artifactId>spring-boot-starter-logging</artifactId> <groupId>org.springframework.boot</groupId> 
	</exclusion> </exclusions> </dependency> 
	<dependency>
	
	<groupId>org.springframework.boot</groupId> 
	<artifactId>spring-boot-starter-log4j2</artifactId> </dependency>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值