Spring Boot 的日志管理
前题:
借助:IntelliJ IDEA
,Maven构建工具
,以及基于SpringBoot 2.3.4
。
官人如需使用 Maven 请阅读教程:Maven 构建工具的下载与安装
官人如需使用 IDEA 请阅读教程:IntelliJ IDEA
更多干货:
请阅读:《穿越SpringBoot》系列文章
请参考:Java学习资料
默认日志格式:
Spring Boot内部采用的是Commons Logging进行日志记录,但在底层为Java Util Logging、Log4J2,SpringBoot使用默认日志框架是Logback,并用INFO级别输出到控制台。
2020-10-17 10:59:23.641 INFO 8060 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2020-10-17 10:59:23.641 INFO 8060 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1207 ms
2020-10-17 10:59:23.891 INFO 8060 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2020-10-17 10:59:24.039 INFO 8060 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '
日志输出具体元素:
时间日期:精确到毫秒,可以用于排序
日志级别:ERROR,WARN,INFO,DEBUG,TRACE
进程ID
分隔符:采用- - -标识实际日志的开始
线程名:方括号括起来(可能会截断控制台输出)
Logger名:通常使用源代码的类名
日志内容:我们输出的消息
日志输出:
SpringBoot的日志级别:TRANCE < DRBUG < INFO < WARN < ERROR <FATAL < OFF
如果设置为WARN,则低于WARN级别的不会输出。
日志配置:
application.properties 文件中定义:
#root 日志级别以WARN级别输出
#修改日志配置
#logging.level.root=trace
#logging.level.root=debug
#logging.level.root=info
#logging.level.root=warn
#logging.level.root=error
#logging.level.root=fatal
#logging.level.root=off
指定类型输出界别:com.example.boot日志以DEBUG级别输出
#com.example.boot日志以DEBUG级别输出
logging.level.com.example.boot=DEBUG
默认情况下:SpringBoot将日志输出到控制台,不会写到日志文件中。
如果要编写除控制台之外的日志文件,则需要在application.properties中设置logging.file或logging.path属性。
①logging.file
设置文件,可以是绝对路径,也可以是相对路径。
#相对路径
logging.file=log/my.log
#绝对路径
logging.file=/log/my.log
#把日志信息写入日志文件,会自动生成
logging.file=f:\\springboot\\info.log
#配置控制台日志显示格式
logging.pattern.console=%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n
#配置文件中日志显示格式
logging.pattern.file=%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n
②logging.path
设置目录,会在该目录下新建spring.log文件,并写入日志内容。
logging.path=/var/log
③二者不能同时使用,如果同时使用,则只有logging.file生效。
④默认情况下,日志文件大小达到10MB会切分一次,产生新的日志文件, 默认界别为:ERROR、WARN、INFO
日志颜色编码:
如果终端支持ANSI,默认情况下会给日志上个色,提高可读性,可以在配置文件中设置spring.output.ansi.enabled来改变默认值
ALWAYS: 启用ANSI颜色的输出。
DETECT : 尝试检测ANSI着色功能是否可用。
NEVER: 禁用ANSI颜色的输出。
如果想修改日志默认色值,可以通过使用%clr关键字转换。
比如想使文本变为黄色%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){yellow}。
目前支持的颜色有(blue、cyan、faint、green、magenta、red、yellow)
自定义日志配置:
由于日志在ApplicationContext
之前就初始化好了,所以SpringBoot为我们提供了logging.config
属性,方便我们配置自定义日志文件。默认情况它会根据日志的依赖自动加载
。
Logging System | Customization |
---|---|
JDK (Java Util Logging) | logging.properties |
Log4j2、ERROR | log4j2-spring.xml 或 log4j2.xml |
Logback | logback-spring.xml、logback-spring.groovy、logback.xml、logback.groovy |
pom.xml 依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifacteId>spring-boot-starter-logging</artifacted>
</dependency>
但在实际开发中不需要直接添加该依赖。【有可能】 将来你导入的jar或者启动器如果它依赖的日志框架跟Spring boot默认依赖的有冲突时,找到他,如下方式排除 依赖即可。
-
<depdency> <!--坐标--> <exclude> <!--排除的坐标--> </exclude> </depdency>