|
JavaEE
Spring —— Spring Boot 创建和使用
Spring —— Spring Boot 配置文件
目录
- Spring Boot 日志文件
- Spring Boot 使用日志
- 得到日志对象
- 使用日志对象打印日志
- 日志级别
- 日志级别作用
- 日志级别的分类
- 日志级别设置
- 日志持久化
- 更简单的日志输出 (lombok)
Spring Boot 日志文件
日志是程序的重要组成部分, 可以发现定位问题, 还可以实现:
- 记录用户登录日志, 分析用户是正常登录还是恶意破解用户
- 记录系统的操作日志, 方便数据恢复和定位操作人
- 记录程序的执行时间, 方便为以后后话程序提供数据支持
Spring Boot 项目在启动时默认就有日志输出
通过上述日志信息, 我们可以发现:
Spring Boot
内置了日志框架.- 默认情况下, 输出的日志不是开发者定义和打印的.
- 日志默认时打印在控制台上的, 但控制台的日志是不能被保存的.
Spring Boot 使用日志
我们要使用 Spring Boot
日志, 需要以下两步:
- 先得到日志对象
- 使用日志对象的相关语法输出要打印的内容
得到日志对象
在程序中获取日志对象需要使用日志工厂 LoggerFactory
// 得到日志对象
private static final Logger logger = LoggerFactory.getLogger(UserController.class);
# 注意 #
Logger 对象是属于 org.slf4j
包下的.
使用日志对象打印日志
@RequestMapping("/hi")
public String sayHi() {
logger.trace("我是 trace");
logger.debug("我是 debug");
logger.info("我是 info");
logger.warn("我是 warn");
logger.error("我是 error");
return "Hi, Spring Boot";
}
打印日志展示:
# 注意 #
我们刚刚写了五个方法, 这里却只打印了三个, 这和日志级别有关, 日志在进行打印的时候, 只会打印当前日志级别, 以及比当前日志级别更高的.
日志格式说明
日志级别
日志级别作用
- 快速筛选重要的日志
- 不同环境实现不同日志级别的设置需求
日志级别的分类
trace
: 微量, 少许的意思, 级别最低- debug: 需要调试时候的关键信息打印
info
: 普通的打印信息 (默认日志级别)- warn: 警告, 不影响使用, 但需要注意的问题
error
: 错误信息, 级别较高的错误日志信息- fatal: 致命的, 因为代码异常导致程序退出执行的事件
日志级别的顺序
日志级别设置
设置日志级别, 只需要在配置文件中设置 “logging.level
”
# 设置日志级别
logging:
level:
root: debug
比之前多了一个 debug
日志
针对不同的目录设置级别
System.out.println VS 日志框架, 两个致命缺点
- 打印信息不全 (没有打印日志时间, 没有打印日志的来源)
- 不能实现日志打印的隐藏和显示
日志持久化
保存日志到磁盘
#
设置日志的保存目录
# 设置日志文件的目录
logging:
file:
path: D:\\logs\\log
#
设置日志文件的文件名
# 设置⽇志文件的文件名
logging:
file:
name: D:\\logs\\test.log
# 注意 #
System.out.println
打印的日志不能被持久化.- 如果设置日志文件的文件名时, 没有写路径, 会和默认程序放到一块.
- 日志不会被覆盖.
更简单的日志输出 (lombok)
#
添加 lombok 依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
<optional>true</optional>
</dependency>
#
使用 @Slf4j 注解输出日志
使⽤ @Slf4j 注解,在程序中使用 log 对象即可输⼊日志,并且只能使用 log 对象才能输出,这是 lombok 提供的对象名.
package com.example.demo.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
@RequestMapping("/p")
@ResponseBody
@Slf4j
public class ArticleController {
@RequestMapping("/log")
public String sayHi() {
log.error("Slf4j 的error");
log.warn("Slf4j 的warn");
log.info("Slf4j 的warn");
return "hi, articleLog";
}
}
旧项目添加新依赖
添加 EditStarters 插件
在 pom.xml
单击右键
|
以上就是今天要讲的内容了,希望对大家有所帮助,如果有问题欢迎评论指出,会积极改正!!