文章目录
- 一. 日志的用途
- 二. 打印日志
- 三. 日志框架
- 门面模式(外观模式)
- SLF4J框架介绍
- 四. 日志格式
- 日志级别
- 配置日志级别
- 日志持久化
- 配置日志文件分割
- 配置日志格式
- 五. 更简单的日志输出
一. 日志的用途
二. 打印日志
得到日志对象:
需要使用日志工厂LoggerFactory
@RestController
public class LoggerController {
private static Logger logger = LoggerFactory.getLogger(LoggerController.class);
注意:Logger 对象是属于 org.slf4j 包下的
打印日志:
使用info()
@RequestMapping("/logger")
public String logger(){
logger.info("---------打印日志---------");
return "打印日志";
}
}
三. 日志框架
SLF4J不同于其他⽇志框架, 它不是⼀个真正的⽇志实现, ⽽是⼀个抽象层, 对⽇志框架制定的⼀种规范,
标准, 接⼝. 所有SLF4J并不能独⽴使⽤, 需要和具体的⽇志框架配合使⽤
门面模式(外观模式)
SLF4J是⻔⾯模式的典型应⽤
⻔⾯模式定义
⻔⾯模式(Facade Pattern)⼜称为外观模式, 提供了⼀个统⼀的接⼝, ⽤来访问⼦系统中的⼀群接⼝, 其主要特征是定义了⼀个⾼层接⼝, 让⼦系统更容易使⽤
SLF4J框架介绍
SLF4J 就是其他⽇志框架的⻔⾯. SLF4J 可以理解为是提供⽇志服务的统⼀API接⼝, 并不涉及到具体的
⽇志逻辑实现
不引入日志门面:
引入日志门面:
四. 日志格式
日志级别
⽇志级别代表着⽇志信息对应问题的严重性, 为了更快的筛选符合⽬标的⽇志信息
结果发现, 只打印了info, warn和error级别的⽇志
这与⽇志级别的配置有关, ⽇志的输出级别默认是 info级别, 所以只会打印⼤于等于此级别的⽇志, 也就
是info, warn和error
配置日志级别
想要修改日志级别默认, 就需要进行配置日志级别
此时, 就把默认日志级别改成debug, 那么只会打印大于debug级别的日志
可以只修改某个类的日志级别
日志持久化
以上的⽇志都是输出在控制台上的, 然⽽在线上环境中, 我们需要把⽇志保存下来, 以便出现问题之后追溯问题. 把⽇志保存下来就叫持久化
日志持久化有两种方式:
**配置日志文件路径: **
默认文件名为spring.log, path不能设置文件名
配置日志文件名:
在这个文件中就保存着所有运行时候产生的日志
在name中可以设置绝对路径或相对路径
当name和path都存在时, 只有name生效
配置日志文件分割
如果我们的⽇志都放在⼀个⽂件中, 随着项⽬的运⾏, ⽇志⽂件会越来越⼤, 需要对⽇志⽂件进⾏分割
当然, ⽇志框架也帮我们考虑到了这⼀点, 所以如果不进⾏配置, 就⾛⾃动配置
默认⽇志⽂件超过10M就进⾏分割
那么我们也可以手动配置
日志文件超过1KB就分割
分割之后的日志文件名为: 日志名.日期.索引
配置日志格式
日志默认的打印格式是这样的
配置让idea支持控制台颜色显示:
添加: -Dspring.output.ansi.enabled=ALWAYS
我们也可以进行手动配置日志格式
pattern:
console: '%d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n'
file: '%d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n'
五. 更简单的日志输出
每次都使⽤LoggerFactory.getLogger(xxx.class) 很繁琐,且每个类都添加⼀遍, lombok给我们提供了⼀种更简单的⽅式
- 添加lombok框架⽀持
- 使⽤ @slf4j 注解输出⽇志
lombok提供的 @Slf4j 会帮我们提供⼀个⽇志对象log,我们直接使⽤就可以