文章目录
- 一、日志概念
- 二、自定义日志打印
- 1、在程序中得到日志对象
- 2、使用日志对象打印日志
- 3、日志格式
- 三、日志持久化
- 1、设置日志的名称
- 2、设置日志的保存路径
- 四、日志级别
- 1、作用
- 2、分类
- 3、使用
- 五、更简单的日志输出—lombok
- 1、添加 lombok 依赖
- ① EditStarters
- 2、输出日志
- 3、lombok 原理解释
- 4、lombok 更多注解说明
一、日志概念
日志就是用来发现和定位问题的。
Spring Boot 项⽬在启动的时候默认就有日志输出,如下:
二、自定义日志打印
⾃定义打印⽇志的步骤:
- 获取⽇志对象。
- 打印内容。
1、在程序中得到日志对象
因为 Spring Boot 中内置了⽇志框架 Slf4j,所以咱们可以直接在程序中调⽤ slf4j 来输出⽇志。
// 1.得到日志对象
private static Logger logger =
LoggerFactory.getLogger(TestController.class);
注意:Logger 对象是属于 org.slf4j 包下的,不要导⼊错包,否则会报错。
常见的日志框架:
2、使用日志对象打印日志
@RestController
public class TestController {
// 1.得到日志对象
private static Logger logger =
LoggerFactory.getLogger(TestController.class);
@RequestMapping("/hikey")
public String HiKey() {
// 2.打印⽇志
logger.info("Hi,Spring Boot Logger!");
}
}
运行结果为:
3、日志格式
三、日志持久化
日志持久化的方式:
- 设置日志的名称
- 设置日志的保存路径
1、设置日志的名称
# 设置⽇志⽂件的名称
logging:
file:
name: springboot.log
运行结果为:
特性:
- 日志不会丢失,会一直追加
- 当日志较大时,会自动分割
2、设置日志的保存路径
# 设置⽇志⽂件的⽬录
logging:
file:
path: D:\work\
运行结果为:
四、日志级别
1、作用
日志的级别就是用来筛选日志的。
有了⽇志级别之后就可以过滤⾃⼰想看到的信息了,⽐如设置⽇志级别为 error,那么就可以只看程序的报错⽇志了。
2、分类
日志的级别有:
- trace:微量,少许的意思,级别最低;
- debug:调试,需要调试时候的关键信息打印;
- info:普通,普通打印信息;
- warn:警告,不影响使⽤,但需要注意的问题;
- error:错误,级别较⾼的错误⽇志信息;
- fatal:致命的,因为代码异常导致程序退出执⾏的事件。
其级别顺序为:
注意:虽然有 fatal 这个级别,但是我们并没有办法去使用这个级别的日志。
3、使用
⽇志级别配置只需要在配置⽂件中设置 “logging.level” 配置项即可,代码如下:
# 日志级别设置
logging:
level:
# spring 的日志
root: info
# 自定义路径
com:
example:
springbootdemo: debug
测试类:
@RestController
public class TestController {
// 1.得到日志对象
private static Logger logger =
LoggerFactory.getLogger(TestController.class);
@RequestMapping("/hikey")
public String HiKey() {
// 2.打印日志
logger.trace("Hi,i am trace.");
logger.debug("Hi,i am debug.");
logger.info("Hi,i am info.");
logger.warn("Hi,i am warn.");
logger.error("Hi,i am error.");
return myList.getName().toString();
}
}
运行结果为:
五、更简单的日志输出—lombok
刚刚我们学习了自定义日志打印,但如果我们想在多个类中打印日志,每次都要使用一次 LoggerFactory.getLogger(xxx.class),这样就会非常的麻烦,lombok 就可以解决这个问题。
1、添加 lombok 依赖
我们要先增加 lombok 依赖。
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<optional>true</optional>
</dependency>
① EditStarters
这里分享一个小插件,用来添加依赖的。
File -> Settings -> Plugins
在 pom.xml 中,右键 -> Generate -> EditStarters
2、输出日志
使用 @Slf4j 注解,使用 log 对象,即可输入日志,代码如下:
@RestController
@Slf4j
public class StudentController {
@RequestMapping("/sayhello")
public String sayHello(){
// 2.使用日志对象,打印日志
log.info("Hi,i am info.");
return "Hi,Spring Boot Logger!";
}
}
运行结果为:
3、lombok 原理解释
target 为项⽬最终执⾏的代码,我们查看 target ⽬录就可以知道 lombok 的原理:
通过对比,我们可以发现在字节码文件中, @slf4j 注解消失了,而多出来了一行代码,正是我们之前觉得麻烦的代码。所以 lombok 其实就是在 .java 文件转化为 .class 文件之前,将注解变为代码插入到 .java 文件中。如图:
4、lombok 更多注解说明
基本注解
注解 | 作用 |
@Getter | ⾃动添加 getter ⽅法 |
@Setter | ⾃动添加 setter ⽅法 |
@ToString | ⾃动添加 toString ⽅法 |
@EqualsAndHashCode | ⾃动添加 equals 和 hashCode ⽅法 |
@NoArgsConstructor | ⾃动添加⽆参构造⽅法 |
@AllArgsConstructor | ⾃动添加全属性构造⽅法,顺序按照属性的定义顺序 |
@NonNull | 属性不能为 null |
@RequiredArgsConstructor | ⾃动添加必需属性的构造⽅法,final + @NonNull 的属性为必需 |
组合注解
注解 | 作用 |
@Data | @Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor + @NoArgsConstructor |
@Slf4j | 添加⼀个名为 log 的⽇志,使⽤ slf4j |