目录
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)使用单元测试,在测试功能的时候,可以不污染连接的数据库,也就是可以不对数据库进行任何改变的情况下测试功能。
测试框架的添加