目录

一、日志有什么作用

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

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

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

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

二、日志怎样使用

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

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

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

有哪些级别:

trace

debug

info

warn

error

fatal

日志的级别规则:

日志的级别设置:

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

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

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

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

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

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

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

第二步:添加注解@Slf4j

日志包含哪些内容(6个)

​编辑

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

lombok有哪些注解(一览)


一、日志有什么作用

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


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

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

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


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

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


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

方便数据恢复定位操作人


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

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


二、日志怎样使用

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


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

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:当设置了一个级别之后,只有比这个级别及其更高的日志级别才可以输出,否则不可以输出。


日志的级别设置:

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

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

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

然后启动一下springBoot项目:


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

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

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

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


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

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

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

注意事项:

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

要改成:“/”的方式

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

如果真的想改成”\”的形式来进行保存,那么就需要使用到转义:


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

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

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


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

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


第二步:添加注解@Slf4j

代码实现:

/** * @author 25043 */@Controller@ResponseBody@RequestMapping("/user")@Slf4jpublic class UserController {@RequestMapping("/sayHi2")public void sayHi2(){log.info("I am info");log.error("I am debug");log.warn("我是warn");log.error("我是error");}}

日志包含哪些内容(6个)


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

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

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

UserController的字节码(.class文件)


lombok有哪些注解(一览)

@Data注解:

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