义 - 云代码空间
——
日志是程序的重要组成部分,在程序报错的时候,如果我们不看日志,是很难排查出错误的,除非你真的是很有经验.所以日志最主要的作用就是排除和定位问题.
日志提供的功能:
在我们启动 springboot 项目的时候就会输出日志:
主要分两个步骤:
在一个类中先获得打印日志对象(日志框架提供的日志对象,而日志框架默认已经集成到 springboot 里了)使用日志对象提供的方法实现日志的打印
得到日志对象 logger ,它来自于 slf4j,不要导错了包,在程序中获取⽇志对象需要使⽤⽇志⼯⼚ loggerfactory
import org.slf4j.logger; import org.slf4j.loggerfactory; import org.springframework.stereotype.controller; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.responsebody; @controller @responsebody public class usercontroller { //1. 先得到日志对象(来自 slf4j) private static final logger log = loggerfactory.getlogger(usercontroller.class); //设置当前的类型 @requestmapping("/sayhi") public void sayhi(){ //2. 使用日志对象提供的打印方法进行日志打印 log.trace("我是 trace"); log.debug("我是 debug"); log.info("我是 info"); log.warn("我是 warn"); log.error("我是 error"); } }
有些没打印,因为他只会打印跟他同级别的或者比他级别高的日志,他这里默认是 info 级别.
反馈一些需要的日志,并不需要把所有的都打印出来
就像是如果你是一家 2 万人的公司的老板,需要每天看他们的反馈信息,难道每个人都看吗?这显然看不完,你只需要看一些领头的就行…
日志级别分为:
日志级别的顺序:
越往上接收到的消息就越少。
⽇志级别配置只需要在配置⽂件中设置“logging.level”配置项即可:
# 设置全局的日志级别
logging.level.root=warn
# 设置局部文件夹的日志级别
logging.level.com.example.demo.usercontroller=trace
之前的 info 级别日志就没打印了.
注意:当存在局部日志级别和全局的日志级别设置时,那么当访问局部日志时,使用的是局部日志级别.也就是 局部日志优先级 > 全局日志级别
以上的⽇志都是输出在控制台上的,然⽽在⽣产环境上咱们需要将⽇志保存下来,以便出现问题之后追溯问题,把⽇志保存下来的过程就叫做持久化。
日志持久化(将日志永久的保存到磁盘的某个位置)
1:在配置文件中设置日志保存的路径,当设置了保存路劲之后,那么日志就会自动进行持久化
2:在配置文件中设置日志保存的名称,日志会自动进行持久化
#设置日志保存的目录写法一
logging.file.path=d:\\log
#设置日志保存的目录写法二
logging.file.path=d:/log
打开这个文件:
# 设置日志的保存名称
logging.file.name=d:\\log\\spring-boot.log
如果你当初没有添加 lombok 又不想重开项目,有这样一种办法,下载插件 editstarters:
import lombok.extern.slf4j.slf4j; import org.slf4j.logger; import org.slf4j.loggerfactory; import org.springframework.stereotype.controller; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.responsebody; @controller @responsebody @slf4j //替代了之前需要通过 loggerfactory.getlogger 操作 public class usercontroller { //1. 先得到日志对象(来自 slf4j) // private static final logger log = // loggerfactory.getlogger(usercontroller.class); //设置当前的类型 @requestmapping("/sayhi") public void sayhi(){ //2. 使用日志对象提供的打印方法进行日志打印 log.trace("我是 trace"); log.debug("我是 debug"); log.info("我是 info"); log.warn("我是 warn"); log.error("我是 error"); } }
看.class文件,他是给我们转换了的:
java 程序的运⾏原理:
lombok 的作⽤如下图所示:
组合注解:
日志注解:
到此这篇关于springboot深入了解日志的使用的文章就介绍到这了