目录
一,日志概述
二,SpringBoot 日志
2.1 日志样式
2.2 打印日志
2.3 日志级别
2.4 日志配置
配置打印日志级别
日志持久化
日志文件分割
三, @Slf4j 注解
一,日志概述
日志对于我们来说并不陌生,在刚开始学习Java的时候,通常会使用System.out.print来打印日志发现和定位问题,或者根据日志来分析程序的运行过程。但是随着项目越来越复杂,我们对日志的打印也有了更高的要求:
- 日志可以记录系统或应用程序在运行过程中的各种事件,包括错误、警告、异常信息等。当系统出现问题时,日志成为首要的问题诊断工具,帮助开发者快速定位问题原因,从而采取相应的解决措施。
- 日志可以记录系统或应用的关键安全事件,如用户登录、权限变更、敏感操作等。这些记录对于安全审计至关重要,可以帮助组织追踪潜在的安全威胁,及时采取措施防止数据泄露或其他安全问题。
- 日志还可以记录系统的版本变更信息,包括代码更新、配置修改等。这些信息对于版本控制和变更管理至关重要,可以帮助开发者追踪系统状态的变化,确保变更的准确性和可追溯性。
- .........
所以我们需要使用一些专门的日志框架,下面我们就来介绍一下在SpringBoot中如何快速打印日志。
二,SpringBoot 日志
2.1 日志样式
我们先来观察一下系统打印的日志:
2.2 打印日志
想要打印出上述类型的日志,我们需要获取日志对象中获取⽇志对象中获取⽇志对象:
@RestController
@RequestMapping("/demo4")
public class demo4 {//使用日志工厂获取日志对象//getLogger()的参数是当前的类对象private static Logger logger = LoggerFactory.getLogger(demo4.class);@RequestMapping("/logger")public String printLog(){logger.info("这是一个日志");return "打印日志";}
}
注:Logger 对象是 org.slf4j 包下的,注意不要导错包!!!
2.3 日志级别
日志级别从高到低依次为:fatal,error,warn,info,debug,trace
- FATAL:致命信息,表示需要立即被处理的系统级错误
- ERROR:错误信息,级别较高的错误日志信息,但任然不系统的继续运行
- WARN:警告信息,不影响使用,但是需要注意的问题
- INFO:普通信息,用于记录应用程序正常运行时的一些歇息
- DEBUG:调试信息,需要调试时打印的关键信息打印
- TRACE:追踪信息,比DEBUG更细粒度的信息事件(除非有特殊用意,否则使用DEBUG替代)
针对不同的级别,Logger对象提供了不同的方法来输出日志:
@RestController
@RequestMapping("/demo4")
public class demo4 {private static Logger logger = LoggerFactory.getLogger(demo4.class);@RequestMapping("/logger")public String printLog(){//没有fatal方法,因为一般遇到这种问题,程序会直接崩溃,不需要提醒也知道出错了logger.error("error级别日志");logger.warn("warn级别日志");logger.info("info级别日志");logger.debug("debug级别日志");logger.trace("trace级别日志");return "打印日志";}
}
观察控制台的结果,可以发现只有info级别以上的日志,这与日志的配置有关,日志的输出级别默认是 info 级别,所以只会大于等于info级别的日志,即 info,warn,error
2.4 日志配置
配置打印日志级别
logging:level:com:example:javaeespringioc:demos: traceroot: info
日志持久化
日志持久化有两种方式:1.配置日志文件名 2.配置存储目录
# 配置日志文件名
logging:file:name: logger/springboot.log
# 配置日志文件目录
# 该方式只能设置路径,文件名称是固定的spring.log
logging:file:path: logger1/springboot.log
注:如果两个同时使用,那么以logging.file.name为准!!!
日志文件分割
logging.logback.rollingpolicy.file-name-pattern:配置日志分割后的文件格式;logging.logback.rollingpolicy.max-file-size:日志文件超过这个大小就自动分割
logging:file:path: logger1/springboot.loglogback:rollingpolicy:max-file-size: 1KBfile-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i
三, @Slf4j 注解
每次使用private static Logger logger = LoggerFactory.getLogger(...)方法很繁琐,且在每个类中创建时处理参数不同,其他都一样,所以可以使用 lombok 框架,它为我们提供了 @Slf4j 注解。
在.xml文件中添加 lombok 依赖
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional>
</dependency>
使用 @Slf4j 注解
@Slf4j
@RestController
@RequestMapping("/demo4")
public class demo4 {@RequestMapping("/logger")public String printLog(){log.error("error级别日志");log.warn("warn级别日志");log.info("info级别日志");return "打印日志";}
}