【springBoot篇2】springBoot日志篇

时间:2022-07-31 01:22:02

目录

一、日志有什么作用

作用1:快速定位问题的所在之处(最主要)

作用2:记录用户的登录日志

作用3:记录系统的操作日志

作用4:记录方法的执行时间

二、日志怎样使用

  ①先得到日志对象(slf4j的Logger对象)  ​​​编辑

②根据日志等级来输出日志内容

 三、日志的级别(由低到高:6个)

有哪些级别:

     trace

     debug

     info

     warn

    error

    fatal

日志的级别规则:

日志的级别设置:

全局日志(作用于整个项目):

设置局部日志(指定某一个类)

日志的持久化(保存到磁盘)

持久化的方式1:设置保存路径 

持久化方式2:设置日志的保存名称

更加简易的添加日志的方式:添加lombok

第一步:需要安装插件(EditStarters)

第二步:添加注解@Slf4j

为什么@Slf4j可以自动生成这样的一个log对象呢?(lombok的实现原理)

lombok有哪些注解(一览)


一、日志有什么作用

       日志是程序的重要组成部分,如果程序报错了,不打开控制台查看日志,那么很难找到问题的所在地方。


作用1:快速定位问题的所在之处(最主要)

因此,日志有一个很重要的作用,那就是:方便快速定位问题的所在之处

当程序在线上运行的时候出现了bug,那就需要首先查看日志来锁定bug。


作用2:记录用户的登录日志

       假如当某一个用户一天之内的登录次数达到了几万次,那么就需要通过日志来记录这一个用户的非法登录行为,判定用户是正常登录还是恶意的破解


作用3:记录系统的操作日志

方便数据恢复定位操作人


作用4:记录方法的执行时间

记录到具体的方法执行的时间,方便为以后优化程序提供数据支持


二、日志怎样使用

  ①先得到日志对象(slf4j的Logger对象)  ​​【springBoot篇2】springBoot日志篇


②根据日志等级来输出日志内容

public void sayHi(){
         //各个级别的日志输出
         logger.info("I am info");
         logger.debug("I am debug");
         logger.warn("我是 warn");
         logger.error("我是 error");
    }

 三、日志的级别(由低到高:6个)

有哪些级别:

     trace

      少许的日志,这一个是最低的级别。


     debug

        这个级别用于"调试"的级别


     info

       这个级别是普通的日志信息。(如果不指定日志的级别,那么默认就是这个


     warn

       警告日志:有一些地方存在警告的风险的,就需要使用到这个warn级别的日志


    error

       错误级别的日志,如果发生了一些错误,那么就需要使用这个级别来记录。


    fatal

       发生了比较致命的情况,需要由系统来进行输出,不可以由用户手动进行debug输出。


日志的级别规则:

 规则1:越往上收到的消息就越少,出现的频率就越低

 规则2:当设置了一个级别之后,只有比这个级别及其更高的日志级别才可以输出,否则不可以输出。

 ​​​​​​​​【springBoot篇2】springBoot日志篇


日志的级别设置:

全局日志(作用于整个项目):

需要在application.properties这一个配置文件当中进行日志等级的设置。

可以设置为:trace、debug、info、warning、error、fatal

【springBoot篇2】springBoot日志篇 

然后启动一下springBoot项目:

【springBoot篇2】springBoot日志篇


设置局部日志(指定某一个类)

需要使用:logging.level.类的路径

【springBoot篇2】springBoot日志篇

需要注意的是:当局部日志全局日志冲突的时候,一般情况下以局部日志的为标准

局部日志的优先级>全局日志的级别


日志的持久化(保存到磁盘)

持久化的方式1:设置保存路径 

配置文件中需要设置日志的保存路径,当设置了保存的路径之后,那么日志就会自动持久化。

注意事项:

配置文件当中不可以使用\D这样的"\"的方式来进行路径的指明。

【springBoot篇2】springBoot日志篇

要改成:"/"的方式

【springBoot篇2】springBoot日志篇

      这样子,只要项目一启动,那么就会在E:/demo4/log这个位置多出来一个文件夹log,然后会在这个log文件夹下面多一个配置文件出来。

【springBoot篇2】springBoot日志篇如果真的想改成"\"的形式来进行保存,那么就需要使用到转义:

   【springBoot篇2】springBoot日志篇


持久化方式2:设置日志的保存名称

配置文件当中设置日志的保存名称,那么日志也会自动进行保存。

【springBoot篇2】springBoot日志篇

然后就可以在对应的路径下面看到这一个日志了:

【springBoot篇2】springBoot日志篇


更加简易的添加日志的方式:添加lombok

第一步:需要安装插件(EditStarters)

【springBoot篇2】springBoot日志篇


第二步:添加注解@Slf4j

代码实现:

/**
 * @author 25043
 */
@Controller
@ResponseBody
@RequestMapping("/user")

@Slf4j
public class UserController {

    @RequestMapping("/sayHi2")
    public void sayHi2(){
        log.info("I am info");
        log.error("I am debug");
        log.warn("我是warn");
        log.error("我是error");
    }
}

为什么@Slf4j可以自动生成这样的一个log对象呢?(lombok的实现原理)

编译时期,@Slf4j会为当前类当中设置一个静态从常量属性,这一个属性就是log

通过查看UserController编译之后的.class文件,可以看到这个属性。

【springBoot篇2】springBoot日志篇

UserController的字节码(.class文件) 

【springBoot篇2】springBoot日志篇


lombok有哪些注解(一览)

【springBoot篇2】springBoot日志篇

@Data注解: 

 【springBoot篇2】springBoot日志篇

 这些注解的原理,就是在编译时期添加对应的方法