SpringBoot学习笔记——日志框架

在项目的开发中,日志是必不可少的一个记录事件的组件,所以也会相应的在项目中实现和构建我们所需要的日志框架。

而市面上常见的日志框架有很多,比如:JCL、SLF4J、Jboss-logging、jUL、log4j、log4j2、logback等等,我们该如何选择呢?

通常情况下,日志是由一个抽象层+实现层的组合来搭建的。
SpringBoot:底层是Spring框架,Spring框架默认是用JCL;‘
SpringBoot选用 SLF4j和logback;

1. springboot日志关系

当我们在使用SpringBoot时,同样可能还会调用其他的框架,比如:Spring+Mybatis等等,这些框架中都有自己底层的日志框架在使用,所以,我们需要在引用的同时,将他们的日志框架排除掉即可.
springboot默认使用的是是commons-logging:

<dependency>
	<groupId>org.springframeworkgroupId>
	<artifactId>spring‐coreartifactId>
	<exclusions>
		<exclusion>
			<groupId>commons‐logginggroupId>
			<artifactId>commons‐loggingartifactId>
		exclusion>
	exclusions>
dependency>

SpringBoot能自动适配所有的日志,而且底层使用slf4j+logback的方式记录日志,引入其他框架的时候,只需要把这个框架依赖的日志框架排除掉即可。

2. 日志使用

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

//记录器
Logger logger = LoggerFactory.getLogger(getClass());
@Test
public void contextLoads() {

	//日志的级别;由低到高 trace
	//可以调整输出的日志级别;日志就只会在这个级别以以后的高级别生效
	logger.trace("这是trace日志...");
	logger.debug("这是debug日志...");
	//SpringBoot默认给我们使用的是info级别的,没有指定级别的就用SpringBoot默认规定的级别;root级别
	logger.info("这是info日志...");
	logger.warn("这是warn日志...");
	logger.error("这是error日志...");
}

SpringBoot学习笔记——日志框架_第1张图片
可以看到,日志只输出了info、warn、error。也就是说SpringBoot默认是设置info级别。

那么,按照我们的需要,要如何修改这个日志输出级别呢?如下,按照你需要的可以配置,输出在控制台的日志的输出级别,一般情况下只需要默认即可。

logging.level.com.atguigu=trace

2.2 配置日志生成的路径及日志名称

SpringBoot还可以修改日志的默认配置,当日志的信息量很大时,我们还可以将日志输出到路径文件中:
SpringBoot学习笔记——日志框架_第2张图片
我们需要指定我们需要的日志名称以及日志生成的路径,用到两个配置,都是在application.properties/yml中写,如下:(都不设置的话,不生成日志)

# 按照默认的名称spring.log,生成到指定路径及日志。
logging.path=output/logs
# 不指定的情况下默认生成在项目根目录,按照配置生成所需的日志名称
logging.file=D:/springboot.log

2.3 日志的格式配置

控制台默认输出格式:在这里插入图片描述

# %d-时间格式、%thread-线程、%-5level-从左5字符宽度、%logger{50}-日志50个字符、%msg-信息、%n-换行
# 修改在控制台输出的日志格式
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

效果:
SpringBoot学习笔记——日志框架_第3张图片

2.4 配置自定义log信息

如果想用自己的log配置,不用系统默认的,那么只需要按照官方要求,将该配置文件放在所需类的目录下即可,也可以在resource中配置全局的。
SpringBoot学习笔记——日志框架_第4张图片
然而官方推荐我们在这些命名中,使用带有spring的扩展名,它会被SpringBoot框架识别(不写的单会被日志框架识别),并且可以使用其相应的功能,比如根据环境来使用某段配置:
SpringBoot学习笔记——日志框架_第5张图片

3. 切换日志框架

可以按照slf4j的日志适配图,进行相关的切换;
slf4j+log4j的方式:

<dependency>
	<groupId>org.springframework.bootgroupId>
	<artifactId>spring‐boot‐starter‐webartifactId>
	<exclusions>
		<exclusion>
			<artifactId>logback‐classicartifactId>
			<groupId>ch.qos.logbackgroupId>
		exclusion>
	<exclusion>
	
	<artifactId>log4j‐over‐slf4jartifactId>
	<groupId>org.slf4jgroupId>
	exclusion>
exclusions>
dependency>
<dependency>
	<groupId>org.slf4jgroupId>
	<artifactId>slf4j‐log4j12artifactId>
dependency>

切换为log4j2

<dependency>
	<groupId>org.springframework.bootgroupId>
	<artifactId>spring‐boot‐starter‐webartifactId>
	<exclusions>
		<exclusion>
			<artifactId>spring‐boot‐starter‐loggingartifactId>
			<groupId>org.springframework.bootgroupId>
		exclusion>
	exclusions>
dependency>
<dependency>
	<groupId>org.springframework.bootgroupId>
	<artifactId>spring‐boot‐starter‐log4j2artifactId>
dependency>

本文大部分转载自https://www.cnblogs.com/iceb/p/9209796.html

你可能感兴趣的:(笔记,spring,boot,logging)