第十节:SpringBoot 中的日志管理
SpringBoot 默认使用的日志框架是
logback
。spring-boot-starter
中包含了spring-boot-starter-logging
模块。该日志框架就是logback
。所以我们也不需要单独引入spring-boot-starter-logging
模块。
SpringBoot 默认日志格式
格式说明
时间戳,精确到毫秒:
2021-11-13 14:35:20.298
logback 日志级别.日志级别分为:TRACE、DEBUG、INFO、WARN、ERROR、FATAL:
INFO
进程 ID:
1414
分割符:默认是:
---
线程名称:
[ restartedMain]
案例演示
这里我们用到了
lombok
,使用日志的时候我们可以用@Slf4j
注解。
pom.xml 配置
我们在Controller
打印日志
启动
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
配置
启动
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
启动
Lession10Application
,看控制台
root 是项目所有的日志级别。启动成功了,但是没有啥日志输出。我们把默认的日志级别设置成
WARN
,按照层级关系INFO
,DEBUG
,TRACE
的日志都不输出。
我们在
application.properties
将 root 的日志级别改成INFO
,自己的写的业务包日志级别改成DEBUG
我们在
RumenzConfig
配置类中输出了一个INFO
级别的日志。
启动
Lession10Application
,看控制台发现log.info("这是info级别日志");
没有输出。
批量设置日志级别
如果我们想给
com.rumenz.lession10.controller
和com.rumenz.lession10.controller.service
设置统一的日志级别。
application.properties
中客户配置,包和包之间用英文逗号分隔
日志的其它配置项
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.file
用来指定文件中日志输出的格式。
application.properties
可以配置
上面各个符号参数的含义
%d{yyyy-MM-dd HH:mm:ss}
——日志输出时间%thread
——输出日志的进程名字,这在 Web 应用以及异步任务处理中很有用%-6level
——日志级别,并且使用 5 个字符靠左对齐%logger
- ——日志输出者的名字%msg
——日志消息%n
——平台的换行符
本小结源码地址:
GitHub:https://github.com/mifunc/springboot/tree/main/lession10
Gitee:https://gitee.com/rumenz/springboot/tree/master/lession10
https://rumenz.com/rumenbiji/springboot-log.html
介绍
我的博客 https://rumenz.com/ ,
我的工具箱 https://tooltt.com/
微信公众号:【入门小站】
关注【入门小站】回复【1001】获取 linux 常用命令速查手册
关注【入门小站】回复【1003】获取 LeetCode 题解【java 语言实现】
关注【入门小站】回复【1004】获取 Java 基础核心总结
关注【入门小站】回复【1009】获取 阿里巴巴 Java 开发手册
版权声明: 本文为 InfoQ 作者【入门小站】的原创文章。
原文链接:【http://xie.infoq.cn/article/b27e07bd075b5a6ab9092d7a2】。文章转载请联系作者。
评论