Spring Boot与日志

Spring Boot与日志

一. 日志框架

市面上的日志框架: JUL, JCL, Jboss-logging, logback, log4j, log4j2, slf4j …

日志门面日志实现
JCL(jakarta Commons Logging), SLF4j(Simple Logging Facade For Java), Jboss-loggingLog4j, JUL(java.util.logging), Log4j2, Logback

左边选一个门面(抽象层), 右边选一个实现;

Spring框架默认选择:JCLcommmons-logging

SpringBoot默认选用:SLF4Jlogback


二. SLF4j使用

1. 如何在系统中使用SLF4j

在开发的时候, 日志记录方法的调用, 不应该来直接调用日志的实现类, 而是调用日志抽象层里面的方法;

给系统导入slf4jjar包 和 logback的实现jar

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");
  }
}

调用层级关系:

在这里插入图片描述

每一个日志的实现框架都有自己的配置文件, 使用slf4j以后, 配置文件还是做成日志实现框架的配置文件.

2. 统一日志框架

A系统(slf4j + logback) : Spring(commons-logging) + Hibernate(jboss-logging) + MyBatis

解决同一日志记录, 即是别的框架和系统一起同一使用slf4j进行输出

在这里插入图片描述

解决方案:

  1. 将系统中其它日志框架先排除

  2. 使用中间包来替换原有的日志框架

  3. 导入slf4j其它的实现


三. SpringBoot日志关系

SpringBoot使用spring-boot-starter-logging来做日志功能

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-logging</artifactId>
</dependency>

底层依赖关系:

在这里插入图片描述

总结:

  1. SpringBoot底层也是使用slf4j + logback 的方式进行日志记录
  2. SpringBoot也把其它的日志都替换成立slf4j
  3. 中间的替换包内部使用slf4j的实现
  4. 当引用了其它框架, 一定要把这个框架的默认日志依赖移除掉

四. 日志使用

1. 默认配置

SpringBoot默认帮我们配置好了日志

import org.junit.jupiter.api.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class LoggingApplicationTests {

	//获取日志记录器
	Logger logger = LoggerFactory.getLogger(getClass());

	@Test
	void contextLoads() {
		//日志级别
		logger.trace( "这是trace(跟踪)日志...");
		logger.debug("这是debug(调试)日志...");
		//SpringBoot默认给我们使用的是info级别
		logger.info("这是info(普通)日志...");
		logger.warn("这是warn(警告)日志...");
		logger.error("这是error(错误)日志...");
	}

}

SpringBoot默认只显示info级别或以上的日志信息, 可以通过修改配置文件的参数设置显示日志的级别

logging.level 包名 = 级别, 默认级别为root

logging.level.com.study=trace

同时SpringBoot默认只在控制台中输出日志信息, 如果想保存文件需要设置日志路径和文件名

# 指定日志文件路径和文件名
logging.file.path=/spring/log
logging.file.name=springboot.log

即在linux的根目录下/spring/log下的springboot.log文件


可以通过配置指定日志输出的格式

# 在控制台输出的日志格式
logging.pattern.console=%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n
# 在日志文件中的输出格式
logging.pattern.file=%d{yyyy-MM-dd} === [%thread] === %-5level === %logger{50} === %msg%n

2. 指定配置

给类路径下放上每个日志框架自己的配置文件即可, SpringBoot就不再使用其默认配置

Logging SystemCustomization
Logbacklogback-spring.xml, logback-spring.groovy, logback.xml, logback.groovy
Log4j2log4j2-spring.xml, log4j2.xml
JDK(Java.Util.Logging)logging.properties
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值