共计 5235 个字符,预计需要花费 14 分钟才能阅读完成。
SpringBoot 默认应用的日志框架是
logback
。spring-boot-starter
中蕴含了spring-boot-starter-logging
模块。该日志框架就是logback
。所以咱们也不须要独自引入spring-boot-starter-logging
模块。
<dependency> | |
<groupId>org.springframework.boot</groupId> | |
<artifactId>spring-boot-starter-logging</artifactId> | |
</dependency> |
SpringBoot 默认日志格局
格局阐明
- 工夫戳, 准确到毫秒:
2021-11-13 14:35:20.298
- logback 日志级别. 日志级别分为:TRACE、DEBUG、INFO、WARN、ERROR、FATAL:
INFO
- 过程 ID:
1414
- 宰割符: 默认是:
---
- 线程名称:
[restartedMain]
案例演示
这里咱们用到了
lombok
, 应用日志的时候咱们能够用@Slf4j
注解。
pom.xml 配置
<?xml version="1.0" encoding="UTF-8"?> | |
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> | |
<modelVersion>4.0.0</modelVersion> | |
<parent> | |
<groupId>org.springframework.boot</groupId> | |
<artifactId>spring-boot-starter-parent</artifactId> | |
<version>2.5.6</version> | |
<relativePath/> <!-- lookup parent from repository --> | |
</parent> | |
<groupId>com.rumenz</groupId> | |
<artifactId>lession10</artifactId> | |
<version>0.0.1-SNAPSHOT</version> | |
<name>lession10</name> | |
<description> 第十节:SpringBoot 中的日志治理 </description> | |
<properties> | |
<java.version>1.8</java.version> | |
</properties> | |
<dependencies> | |
<dependency> | |
<groupId>org.springframework.boot</groupId> | |
<artifactId>spring-boot-starter-web</artifactId> | |
</dependency> | |
<dependency> | |
<groupId>org.springframework.boot</groupId> | |
<artifactId>spring-boot-devtools</artifactId> | |
<scope>runtime</scope> | |
<optional>true</optional> | |
</dependency> | |
<dependency> | |
<groupId>org.springframework.boot</groupId> | |
<artifactId>spring-boot-starter-test</artifactId> | |
<scope>test</scope> | |
</dependency> | |
<dependency> | |
<groupId>org.projectlombok</groupId> | |
<artifactId>lombok</artifactId> | |
<version>1.18.12</version> | |
</dependency> | |
</dependencies> | |
<build> | |
<plugins> | |
<plugin> | |
<groupId>org.springframework.boot</groupId> | |
<artifactId>spring-boot-maven-plugin</artifactId> | |
</plugin> | |
</plugins> | |
</build> | |
</project> |
咱们在 Controller
打印日志
package com.rumenz.lession10.controller; | |
import lombok.extern.slf4j.Slf4j; | |
import org.slf4j.Logger; | |
import org.slf4j.LoggerFactory; | |
import org.springframework.web.bind.annotation.GetMapping; | |
import org.springframework.web.bind.annotation.RequestMapping; | |
import org.springframework.web.bind.annotation.RestController; | |
/** | |
* @className: RumenzController | |
* @description: TODO 类形容 | |
* @author: 入门小站 rumenz.com | |
* @date: 2021/11/11 | |
**/ | |
@Slf4j //lombok 提供的注解 | |
@RestController | |
@RequestMapping("/rumenz") | |
public class RumenzController { | |
// 如果不应用 lombok 就须要用以下代码获取日志操作对象 | |
//Logger log = LoggerFactory.getLogger(RumenzController.class); | |
@GetMapping("/index") | |
public String index(){log.trace("Trace 日志..."); | |
log.debug("Debug 日志..."); | |
log.info("Info 日志..."); | |
log.warn("Warn 日志..."); | |
log.error("Error 日志..."); | |
return "入门小站"; | |
} | |
} |
启动
Lession10Application
, 浏览器拜访http://127.0.0.1:8080/rumenz/index
查看控制台
默认状况下 logback 会把日志打印输出到控制台。
将 logback 日志输入到文件
SpringBoot 默认只会把日志输入到控制台, 并不会记录到文件中, 生产环境中日志须要记录到文件中存档。如果须要输入到文件能够在
application.properties
配置文件中设置logging.file.path
或logging.file.name
logging.file.path
(低版本是 logging.path)设置日志的存储门路, 会在设置的目录下生成 spring.log 日志文件。logging.file.name
(低版本是 logging.name)设置日志文件门路及日志文件名, 能够是绝对路径也能够是相对路径。
两者不能同时应用, 若同时配置, 只有
logging.file.name
失效。默认状况下, 日志大小到 10M 工夫会被截断, 生成新的日志文件。
application.properties
配置
logging.file.name=rumenz.log
启动
Lession10Application
, 浏览器拜访http://127.0.0.1:8080/rumenz/index
查看当前目录下的rumenz.log
会发现外面有日志内容。当然控制台也会输入。
如何设置日志的级别
日志级别总共有
TRACE<DEBUG<INFO<WARN<ERROR<FATAL
逐级提供, 如果日志设置成INFO
则DEBUG
和TRACE
级别的日志不输入。SpringBoot 默认的日志级别是
INFO
, 咱们将 SpringBoot 的默认日志级别改成WARN
application.properties
logging.level.root=WARN
启动
Lession10Application
, 看控制台
root 是我的项目所有的日志级别。启动胜利了, 然而没有啥日志输入。咱们把默认的日志级别设置成
WARN
, 依照层级关系INFO
,DEBUG
,TRACE
的日志都不输入。咱们在
application.properties
将 root 的日志级别改成INFO
,本人的写的业务包日志级别改成DEBUG
logging.level.root=INFO //root 日志以 INFO 级别输入信息 | |
logging.level.com.rumenz.lession10.controller.config=WARN // 指定 config 包下的类以 WARN 级别输入 |
咱们在
RumenzConfig
配置类中输入了一个INFO
级别的日志。
@Slf4j | |
@Configuration | |
public class RumenzConfig { | |
@Bean | |
public User user(){log.info("这是 info 级别日志"); | |
return new User(1, "rumenz.com"); | |
} | |
} | |
@Data | |
@AllArgsConstructor | |
class User{ | |
private Integer id; | |
private String name; | |
} |
启动
Lession10Application
, 看控制台发现log.info("这是 info 级别日志");
没有输入。
批量设置日志级别
如果咱们想给
com.rumenz.lession10.controller
和com.rumenz.lession10.controller.service
设置对立的日志级别。
application.properties
中客户配置, 包和包之间用英文逗号分隔
logging.group.rumenz=com.rumenz.lession10.controller,com.rumenz.lession10.controller.service | |
logging.level.rumenz=INFO |
日志的其它配置项
logging.config
日志配置;logging.logback.rollingpolicy.max-file-size
(低版本用logging.file.max-size
) 最大日志文件大小;logging.logback.rollingpolicy.max-history
(低版本logging.file.max-history
) 最大归档文件数量;logging.pattern.console
控制台输入的日志模式;logging.pattern.dateformat
日志的日期格局;logging.pattern.file
默认应用日志模式logging.pattern.level
日志级别
logging.pattern.console
用来指定控制台日志输入的格局。
application.properties
能够配置
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-6level %logger- %msg%n
logging.pattern.file
用来指定文件中日志输入的格局。
application.properties
能够配置
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} [%thread] %-6level %logger- %msg%n
下面各个符号参数的含意
%d{yyyy-MM-dd HH:mm:ss}
——日志输入工夫%thread
——输入日志的过程名字,这在 Web 利用以及异步工作解决中很有用%-6level
——日志级别,并且应用 5 个字符靠左对齐%logger
– ——日志输入者的名字%msg
——日志音讯%n
——平台的换行符
本小结源码地址:
- GitHub:https://github.com/mifunc/spr…
- Gitee:https://gitee.com/rumenz/spri…
- https://rumenz.com/rumenbiji/…
介绍
- 我的博客 https://rumenz.com/ ,
- 我的工具箱 https://tooltt.com/
- 微信公众号:【入门小站】
- 关注【入门小站】回复【1001】获取 linux 常用命令速查手册
- 关注【入门小站】回复【1003】获取 LeetCode 题解【java 语言实现】
- 关注【入门小站】回复【1004】获取 Java 根底外围总结
- 关注【入门小站】回复【1009】获取 阿里巴巴 Java 开发手册