Spring Boot日志文件

在这里插入图片描述


🍌 一.日志的作用

简单来说,日志就是记录程序中执行的过程,如果出现错误了,从日志中就可以很快的发现和定位问题,而除了这个很重要的发现和定位错误,还可以通过日志实现以下功能:

  • 记录用户登录日志,方便分析用户是正常登录的缓释暴力破解的;
  • 记录系统的操作日志,方便数据恢复和定位操作人;
  • 记录程序的执行时间,方便为以后优化程序提供数据支持;

这些都是通过日志可以解决的事情,下面就看一下日志应该怎么使用!


🍌 二.怎么使用日志

在这里插入图片描述
其实每次启动Spring Boot项目的时候就已经有这些日志文件了,这是由于Spring Boot内部是内置了日志框架的,而且这写日志和System.out.println()是有本质区别的,一方面日志是有输出时间的,另一方面日志也是有级别的,下面先来看一下这些日志怎么样能自定义的打印出来:

🍓 1.自定义打印日志

🍉 1.1.获取日志对象

Spring Boot中内置了日志框架,而日志框架里面就存在日志对象,想要获得到日志对象,就可以通过日志工厂LoggerFactory(这里一定要选择日志框架Slf4j下的(门面模式:不管底层如何实现的,门面一定是这样来使用的,就像是一个代理(中间人)一样,Slf4j不是具体实现的,最终实现的一般是logback))
在这里插入图片描述
来进行获得:

    private  final static Logger log = LoggerFactory.getLogger(UserController.class);

通过后面类就可以知道这些日志是哪个类的日志!

🍉 1.2.使用日志对象提供的方法进行打印

然后通过日志对象的方法就可以进行打印了,而其方法有很多,就是分等级的,后面会进行详细介绍,这里先看一下有什么方法:

		log.trace("我是trace");
        log.debug("我是debug");
        log.info("我是info");
        log.warn("我是warn");
        log.error("我是error");

在这里插入图片描述
简单看一下日志的这些信息是什么:
在这里插入图片描述

可以看到这些日志已经打印出来了,但是只打印了后三个,前两个没有被打印,这就是因为日志级别的原因了(默认是info),下面就来具体讲一下日志的级别!

🍓 2.日志级别

日志的级别就是为了筛选符合目标的日志信息的,而日志级别一般有以下几种:

  • trace:少许(级别最低的);
  • debug:调试日志;
  • info:普通信息日志;
  • warn:警告日志;
  • error:错误日志;
  • fatal:致命日志(系统自己输出的,不能自定义打印);

这里通过设置日志级别就可以看到此级别以上的日志,而不是所有的日志信息都进行获取
而想要设置日志的级别,就可以通过日志信息来进行设置:
在这里插入图片描述
设置全局日志为trace的时候就可以看到刚才的设置其他两个级别的日志也进行打印了:

在这里插入图片描述
这样全局日志的级别就设置成功了,而想要设置单个类的日志级别也是可以的:
在这里插入图片描述
在这里插入图片描述
而当同时设置全局和局部日志级别的时候,局部日志级别>全局日志级别!!


在这里插入图片描述

🍌 三.保存日志

上面可以看到日志信息都是打印在控制台的,而当服务器重启之后,前面的日志就消息了,再想看之前的报错日志就无法下手了,因此这里就需要把日志进行保存处理:

🍓 1.在配置文件中设置日志保存路径

当在配置文件中设置了保存日志的路径之后,日志就可以保存下来了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

🍓 2.在配置文件中设置日志保存文件名

这样也可以将日志进行持久化保存
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
这样也是可以保存下来的!


🍌 四.更简单的实现自定义日志打印-lombok

🍓 1.添加lombok依赖

在pom.xml里面添加依赖:

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>

🍓 2.输出日志

此时就不需要再使用LoggerFactory了,只需要一个注解@Slf4j就可以了:


import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
public class UserController {
    //获取到日志对象
    @RequestMapping("/func")
    public  void func(){
        log.trace("我是trace");
        log.debug("我是debug");
        log.info("我是info");
        log.warn("我是warn");
        log.error("我是error");
    }
}

在这里插入图片描述
也是可以正常实现的!

🍓 3.lombok原理

当打开idea里面字节码文件就知道了:
在这里插入图片描述

发现这里已经将@Slf4j直接转换成了和前面一样的写法,在编译的时候就会把用户的代码和lombok同时进行编译成字节码文件,然后才会在JVM里面进行加载和运行!


以上就是全部和日志相关的内容了!
在这里插入图片描述

  • 38
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 30
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

栋zzzz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值