概述
日志的功能
系统监控
数据采集
日志审计
sout和Springboot比较
之前一直都是通过sout来打印日志,但是SpringBoot项目启动默认就会打印日志,那么我们自己打印的日志和SpringBoot打印的日志有什么不同呢?
java
@RestController
@RequestMapping("/logger")
public class LoggerController {
@RequestMapping("/print")
public String print(){
System.out.println("打印日志");
return "日志打印成功";
}
}

我们通过sout打印的日志就比SpringBoot打印的日志就少了很多的信息,所以SpringBoot内置了日志框架Slf4j,我们在程序直接调用Slf4j来输出日志
日志使用
打印日志
打印日志的步骤:
1.在程序中的到日志对象
2.使用日志对象写出想要打印的内容
java
private static final Logger logger = LoggerFactory.getLogger(LoggerController.class);
@RequestMapping("/print")
public String print(){
logger.info("SpringBoot打印的日志");
System.out.println("打印日志");
return "日志打印成功";
日志框架

Slf4j框架不是日志的真正实现
门面模式(外观模式)
门面模式:提供了一个向外的统一接口,用来访问子系统的接口,让子系统更加方便去使用
引入Sjl4f框架即日志门面,应用程序和日志框架就有了统一的API接口
日志格式

日志级别
日志配置
配置日志级别
fatal(致命信息,既然已经严重程度是非常大的,就已经不需要我们去观察)
error
warn
info
debug
trace
配置整体的日志级别
java
logging:
level:
root: info
配置具体某个包或者类的日志级别
java
logging:
level:
root: trace
com.Kon.demo.controller: trace
日志持久化
绝对路径和相对路径都是可以的
java
file:
path: logger/
name: logger2/springboot.log
注:1.name不仅可以指出路径还可以对文件进行命名
2.如果两个存在,以file.name为准
配置日志文件分割
日志太多不好查看就需要进行分割
java
logback:
rollingpolicy:
max-file-size: 1MB
file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i
配置日志格式
java
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'
更简单的日志输出
每次进行日志输出就要使用
java
private static final Logger logger = LoggerFactory.getLogger(LoggerController.class);
很繁琐,我们现在只需要使用一个注释就可以解决
java
@Slf4j
@RestController
@RequestMapping("/logger")
public class LoggerController {
@RequestMapping("/print")
public String print(){
log.error("打印 error 的日志");
log.warn("打印 warn 的日志");
log.info("打印 info 的日志");
log.debug("打印 debug 的日志");
log.trace("打印 trace 的日志");
System.out.println("打印日志");
return "日志打印成功";
}
}