目录
1.日志的作用
2.日志的用法
3. 自定义日志打印
3.1 在程序中得到⽇志对象
3.2 使用日志对象打印日志
3.3 日志格式说明
4. 日志级别
4.1 日志持久化
5. 更简单的日志输出-lombok
5.1 添加插件(第一次配置时需要)
6.2 添加 lombok 依赖
6.3 输出日志
6.4 lombok 原理解释
6.5 lombok 更多注解说明
6.6 选择不同配置环境平台
7. 单元测试
7.1 生成单元测试类
7.2 添加单元测试代码
7.3 简单的断言说明
1)记录⽤户登录⽇志,⽅便分析⽤户是正常登录还是恶意破解⽤户。2)记录系统的操作⽇志,⽅便数据恢复和定位操作⼈3)记录程序的执⾏时间,⽅便为以后优化程序提供数据⽀持
以上内容就是 Spring Boot 输出的控制台⽇志信息。
1)Spring Boot 内置了⽇志框架(不然也输出不了⽇志)。2)默认情况下,输出的⽇志并⾮是开发者定义和打印的,那开发者怎么在程序中⾃定义打 印⽇志呢?3)⽇志默认是打印在控制台上的,⽽控制台的⽇志是不能被保存的,那么怎么把⽇志永久的保存下来呢?
在程序中获取⽇志对象需要使⽤⽇志⼯⼚ LoggerFactory,如下代码所示
@Controller
@ResponseBody
public class UserController {
//1.先得到日志对象
private final static Logger log =
LoggerFactory.getLogger(UserController.class);
}
@Controller
@ResponseBody
public class UserController {
//1.先得到日志对象
private final static Logger log =
LoggerFactory.getLogger(UserController.class);
@RequestMapping("/say")
public void say() {
log.trace("trace: 微量日志");
log.debug("debug:调试日志");
log.info("info: 普通日志");
log.warn("warn: 警告日志");
log.error("error: 错误日志");
}
}
运行启动类,打印日志效果展示
trace、dubug 级别比info小,所以直接跳过到info,因为info是默认的日志方式
从低到高
⽇志的级别分为:trace:微量,少许的意思,级别最低;debug:需要调试时候的关键信息打印;info:普通的打印信息;(默认)warn:警告,不影响使⽤,但需要注意的问题;error:错误信息,级别较⾼的错误⽇志信息;fatal:致命的,因为代码异常导致程序退出执⾏的事件(不需要我们自己打印)
日志使用
配置全局日志级别为最小,trace
#配置全局日志级别
logging.level.root=trace
打印日志如下,就可以全部打印出来
当全局和局部都设置了日志级别时,以局部为准
#配置全局日志级别
logging.level.root=trace
#设置局部文件夹的日志级别
logging.level.com.example.demo.controller=info
1)在配置文件中设置日志的保存路径,当设置了保存路径之后,日志就会自动的进行持久化
#设置日志的保存 路径
#因为我要保存的路径为 "\IDEA\data",而“\I 和 \d ” 特殊的意义的字符,所以需要两个 "\\"来进行转义
#logging.file.path=D:\\IDEA\\data\
#或者改为“/”
logging.file.path=D:/IDEA/data/
运行查看保存的日志
通过 vscode 打开查看内容
2)在配置文件中设置日志保存的名称,日志就会自动的进行持久化
#设置日志的保存 名称
#保存到该路径下的 spring-boot.log 中
logging.file.name=D:/IDEA/data/spring-boot.log
日志内容如下
安装好插件之后重启
@Controller //与前端进行交互的注解
@ResponseBody
@Slf4j // 利用注解得到日志对象,默认生成 log 对象,下面直接使用即可
public class UserService {
@RequestMapping("/sayhi") //设置路由
public void sayHi() {
log.trace("trace: 微量日志");
log.debug("debug:调试日志");
log.info("info: 普通日志");
log.warn("warn: 警告日志");
log.error("error: 错误日志");
}
}
Java 程序的运行原理
Lombok 的作⽤如下图所示:
1)基本注解
注解
|
作⽤
|
@Getter
|
⾃动添加 getter ⽅法
|
@Setter
|
⾃动添加 setter ⽅法
|
@ToString
|
⾃动添加 toString ⽅法
|
@EqualsAndHashCode
|
自动添加 equals 和 hashCode ⽅法
|
@NoArgsConstructor
|
⾃动添加⽆参构造⽅法
|
@AllArgsConstructor
|
⾃动添加全属性构造⽅法,顺序按照属性的定义顺序
|
@NonNull
|
属性不能为null |
@RequiredArgsConstructor
|
⾃动添加必需属性的构造⽅法,final + @NonNull 的属性为必需
|
2)组合注解
注解 | 作用 |
@Data |
@Getter + @Setter + @ToString +
@EqualsAndHashCode +
@RequiredArgsConstructor +
@NoArgsConstructor
|
3)日志注解
注解 | 作用 |
@Slf 4 j
|
添加⼀个名为 log 的⽇志,使⽤ slf 4 j
|
平台一般都有三个:
运行平台(application)、开发平台(application-dev)、生产平台(application-prod)
//从配置文件中读取图片的保存路径
@Value("${img.path}")
private String imgpath;
@RequestMapping("/say") //路由
public String say() {
return "hello springmvc. " + imgpath;
}
1)可以非常简单、直观、快速的测试某一功能是否正确。2)使用单元测试可以帮我们在打包的时候,发现一些问题;因为在打包之前,所用的单元测试必须正确,否则不能打包成功3)使用单元测试,在测试功能的时候,可以不污染连接的数据库,也就是可以不对数据库进行任何改变的情况下测试功能。
测试框架的添加