下期Spring Mvc我们不见不散~
目录
1.日志的作用
日志的作用就是说,当我们程序发生错误的时候,我们能够得到反馈,比如我们在idea上运行程序的时候,要是出现了报错,就会通过idea的控制台反馈给我们。当然除了发现问题和定位之外,日志还有以下用途:
①记录用户登录日志,方便分析用户是正常登录还是恶意破解用户
②记录系统的哇操作日志,方便数据恢复和定位操作人
③记录程序的执行时间,方便为以后优化程序提供数据支持
2.日志如何使用
当Spring Boot启动的时候,就会有日志在控制台打印输出,这是因为Spring Boot内置了日志框架,不然就输出不了日志。下面的示例就是spring boot下的日志打印:
3.自定义日志打印
①在一个类中先获取到打印日志的对象,而且日志框架提供的日志对象,而日志框架默认已经集成到
Spring Boot
里了②使用日志对象提供的方法实现日志的打印。
3.1在程序中得到日志对象
①需要使用日志工厂LoggerFactory工厂:
形如以下代码进行打印:
private final static Logger log = LoggerFactory.getLogger(UserController.class);
②注意这里的LoggerFactory是来自Slf4j的:
3.2使用日志对象打印日志
①日志对象的打印方法有很多种,后面我们将会逐个介绍他们之间的关联,总而言之,都是由log对象进行形如下方的打印:
package com.example.demo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller @ResponseBody public class UserController { //①得到日志对象 private final static Logger log=LoggerFactory.getLogger(UserController.class); //②自定义打印日志 @RequestMapping("/sayhi") public void run(){ log.trace("这是trace日志"); log.debug("这是debug日志"); log.info("这是info日志"); log.warn("这是warn日志"); log.error("这是error日志"); } }
结果如下:
3.3日志格式说明
用一张图对日志格式的各个部分进行说明:
4.日志级别
什么是日志级别:
日志的级别就是为了筛选符合目标的日志信息的
4.1日志级别的分类与使用
①日志级别的分类:
trace:微量,少许的意思,级别最低;( 少许日志。)
info:普通的打印信息; (普通日志)
debug:需要调试时候的关键信息打印;(普通信息日志)
warn:警告,不影响使用,但需要注意的问题;.(警告日志)
error:错误信息,级别较高的错误日志信息;(错误日志)
fatal:致命的,因为代码异常导致程序退出执行的事件。(致命日志)
②日志的等级:③日志等级的含义:
当我们定义低级别的时候,打印日志可以把所有的等级打印出来
eg.
结果如下:
设置局部文件夹日志级别:
当包含了全局和局部的日志级别设置时,那么当访问局部日志时,使用的是局部日志级别,也就是局部日志级别的优先级高于全局日志级别。
5.日志持久化
①什么是日志持久化?
实质上就是将控制台打印下来的日志给保存下来。因为我们知道,当我们重启服务器后,新的日志会把原有的日志进行覆盖,所以这个时候为了方便查看曾经的日志,我们需要把它给保存下来
②保存的方法:
a.在配置文件中设置保存的路径(注意:书写的时候需要双\\进行转义为\;或者采用linux中的/写法)
执行完后结果如下:
我们就可以在这里访问日志了,也就是日志被保存在了磁盘上。
b.在配置文件中设置保存的文件名:
执行完结果如下:
6.更简单的日志输出lombok
6.1添加lombok依赖
在pom.xml中添加依赖:(如果我们在建项目的时候已经引入了lombok的依赖的话,这一步就可以省略了)
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <optional>true</optional> </dependency>
6.2输出日志
引入lombok后,此时就不需要再使用LoggerFactory了,只需要一个注解@Slf4j就可以了:
代码如下:
package com.example.demo; 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("/sayhi") public void func(){ log.trace("我是trace"); log.debug("我是debug"); log.info("我是info"); log.warn("我是warn"); log.error("我是error"); } }
结果如下:
6.3lombok原理解释
我们就直接用一张图来说明这个原理:(.java文件的话就是class里面的字节码文件,而这里@Slf4j的写法让整个过程变得更简单了)
下期将为大家介绍Spring MVC相关操作~