Springboot版本:2.1.1
Spingboot日志详解
一、日志输出内容
Spring Boot 的默认日志输出类似于以下示例:
2021-06-05 15:58:02.532 INFO 168344 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/boot] : Initializing Spring embedded WebApplicationContext
2021-06-05 15:58:02.533 INFO 168344 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1172 ms
2021-06-05 15:58:02.593 INFO 168344 --- [ main] c.a.d.s.b.a.DruidDataSourceAutoConfigure : Init DruidDataSource
2021-06-05 15:58:02.648 WARN 168344 --- [ main] c.a.druid.pool.DruidAbstractDataSource : oracle.jdbc.driver.OracleDriver is deprecated.Having use oracle.jdbc.OracleDriver.
2021-06-05 15:58:02.702 WARN 168344 --- [ main] com.alibaba.druid.pool.DruidDataSource : removeAbandoned is true, not use in production.
2021-06-05 15:58:02.871 INFO 168344 --- [ main] com.alibaba.druid.pool.DruidDataSource : {
dataSource-1} inited
2021-06-05 15:58:03.243 INFO 168344 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2021-06-05 15:58:03.548 INFO 168344 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '/boot'
2021-06-05 15:58:03.551 INFO 168344 --- [ main] com.boot.BootApplication : Started BootApplication in 2.605 seconds (JVM running for 3.115)
日志输出以下内容:
- 日期和时间:毫秒精度且易于排序。
- 日志级别:
ERROR
,WARN
,INFO
,DEBUG
,或TRACE
。 - 进程标识。
- 一个
---
分隔符来区分实际日志消息的开始。 - 线程名称:括在方括号中(可能会被截断以用于控制台输出)。
- 记录器名称:这通常是日志输出的类名(通常缩写)。
- 日志消息。
二、配置项进行日志配置
1、控制台输出
控制台默认情况下,会记录ERROR
、WARN
和INFO 级别的消息。可以通过使用
–debug来启动应用程序的“debug”模式,也可以在配置文件里添加配置项
debug=true。
$ java -jar bootDemo.jar --debug
debug=true
启用调试模式时,将配置一组核心记录器(嵌入式容器、Hibernate和Springboot)以输出更多信息。启用调试模式不会将应用程序的日志级别配置为debug
来记录所有日志。
2、定制彩色日志
如果你的终端支持 ANSI,则使用彩色日志输出来提高可读性。可以设置 spring.output.ansi.enabled
为 支持的值以覆盖自动检测。
值 | 说明 |
---|---|
ALWAYS |
启用 ANSI 彩色输出。 |
DETECT |
尝试检测 ANSI 着色功能是否可用。 |
NEVER |
禁用 ANSI 颜色的输出。 |
另外需在logback-spring.xml中加入如下配置:
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
使用%clr
转换字配置颜色编码。在最简单的形式中,转换器根据日志级别为输出日志着色,用法如下:
%clr(%d{
yy-MM-dd hh-mm-ss.SSS})
%clr(%d{
yy-MM-dd hh-mm-ss.SSS}){
yellow}
//好像直接用%后面接颜色也可以,如下:
%yellow(%d{
yy-MM-dd hh-mm-ss.SSS})
下面是示例:
%clr(%d{
yy-MM-dd hh-mm-ss.SSS}){
yellow} [%clr(%t){
magenta}] [%clr(%p)] %clr(%C{
1}.%M:%L) |:%clr(%m%n){
blue}
输出效果如下:
其中类名跟方法名还有行数是根据日志等级对应的颜色进行着色的,所以,如果有报错一眼就能看到报错的类跟方法还有所在行数。
下表描述了日志级别所对应的颜色:
等级 | 颜色 |
---|---|
FATAL |
红色 |
ERROR |
红色 |
WARN |
黄色 |
INFO |
绿色 |
DEBUG |