Spring Boot个人学习笔记#2

本文详细介绍常见日志框架及其实现,如JUL、log4j、logback等,并聚焦于SpringBoot如何使用slf4j和logback进行日志记录。探讨日志门面与实现的选择,以及如何在系统中引入并配置这些组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

8.日志

常见的日志框架:

JUL JCL jboos-logging logback log4j log4j2 slf4j…

日志门面(日志抽象层)日志实现
JCL(jakarta commons logging) , slf4j(simple logging facade for java) , jboss-logginglog4j , JUL(java.util.logging) , log4j2 , logback

左边选个门面,右边选个实现

日志门面:slf4j

日志实现:logback

Spring Boot:底层是Spring框架,Spring框架默认使用 JCL

而Spring Boot选用 slf4j和logback

如何在系统中使用slf4j

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

给系统里面导入slf4j的jar和 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以后,配置文件还是做成日志实现框架的配置文件

如何让系统中所有的日志都统一到slf4j

1.将系统中的其他日志框架都排除出去

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

3.我们导入slf4j其他的实现

SpringBoot日志关系

SpringBoot使用它来做日志功能

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

底层依赖关系

[外链图片转存失败(img-xYcdWzYd-1568192898747)(C:\Users\Y\Desktop\杂\1568096595522.png)]

总结

1.SpringBoot底层也是使用slf4j + logback的方式进行记录

2.SpringBoot也把其他的日志都替换成了slf4j

3.中间的替换包…

日志使用
1.默认配置

SpringBoot帮我们配置好了日志

使用

@RunWith(SpringRunner.class)
@SpringBootTest
public class HelloworldApplicationTests {
	//记录器
	Logger logger = LoggerFactory.getLogger(getClass());
	@Test
	public void contextLoads() {
		//日志的级别:由低到高 trace < debug < info < warn < error
		//可以调整输出的日志级别,日志就会从这个级别开始生效
		//SpringBoot默认从info级别生效
		logger.trace("trace...");
		logger.debug("debug...");
		logger.info("info...");
		logger.warn("warning...");
		logger.error("error...");
	}

输出

2019-09-10 14:57:13.602  INFO 5644 --- [           main] c.e.h.HelloworldApplicationTests         : info...
2019-09-10 14:57:13.602  WARN 5644 --- [           main] c.e.h.HelloworldApplicationTests         : warning...
2019-09-10 14:57:13.602 ERROR 5644 --- [           main] c.e.h.HelloworldApplicationTests         : error...
2.自定义配置

我们可以在配置文件中调整输出的日志级别

logging.level.com.example=trace

输出

2019-09-10 15:02:51.088 TRACE 18160 --- [           main] c.e.h.HelloworldApplicationTests         : trace...
2019-09-10 15:02:51.088 DEBUG 18160 --- [           main] c.e.h.HelloworldApplicationTests         : debug...
2019-09-10 15:02:51.088  INFO 18160 --- [           main] c.e.h.HelloworldApplicationTests         : info...
2019-09-10 15:02:51.088  WARN 18160 --- [           main] c.e.h.HelloworldApplicationTests         : warning...
2019-09-10 15:02:51.088 ERROR 18160 --- [           main] c.e.h.HelloworldApplicationTests         : error...

logging.file 和 logging.path 的使用(在配置文件中)

logging.filelogging.pathexampledescription
(none)(none)只在控制台输出
指定文件名(none)my.log输出日志到 my.log 文件
(none)指定目录/var/log输出到指定目录的 spring.log 文件中

例子:

配置文件

logging.level.com.example=trace
logging.file=testLog.log

运行后根目录多了个 testLog.log ,其中包含了日志内容(可指定路径)

配置文件

logging.level.com.example=trace
logging.path=/spring/log

运行后在当前磁盘的 spring/log 文件夹下生成了 spring.log 日志文件

注意:logging.file 和 logging.path 冲突,同时只能指定一个,如果同时使用,则以 logging.file 为准!

另外,可以用

logging.pattern.console(控制台)

logging.pattern.file(文件)

来控制控制台和文件中日志的格式

3.切换日志框架

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值