SpringBoot 日志记录
简介
Spring 使用
commons-loggin作为内部日志,但底层日志实现是开放的,可对接其它日志框架。支持
jul、log4j2、logback等。SpringBoot 提供了默认的控制台输出配置,也可以配置日志输出为文件。SpringBoot 默认使用的是
logback。
日志配置
每个starrer场景,都会导入一个核心场景spring-boot-starter。
核心场景引入了日志的所有功能spring-boot-starter-logging。
默认使用logback+slf4j组合作为默认底层日志
日志是系统一启动就要用,xxxAutoConfiguration是系统启动好了以后放好的组件,后来用的。
日志是利用监听器机制配置好的,ApplicationListener。
日志所有的配置都可以通过修改配置文件实现。以loggin开始的所有配置。
日志格式
注意:logback没有FATAL级别,对应的是ERROR。
我们会发现自定义的没颜色,SpringBoot的默认日志为我们设置了颜色等更多的配置。
我们也可以单独来设置日志的输出时间格式
记录日志
日志级别
由低到高:
ALL < TRACE < DEBUG < INFO < WARN < EROR < FATAL < OFFALL:打印所有日志。
TRACE:追踪框架详细流程日志,一般不使用。
DEBUG:开发调试细节日志。
INFO:关键、感兴趣日志。
WARN:警告信息。
ERROR:业务错误日志,记录各种异常。
FATAL:致命错误,比如jvm系统奔溃。
OFF:关闭所有日志记录
不指定级别的所有类,都使用root指定的级别作为默认级别,SpringBoot日志的默认值级别是INFO。
在application.properties中配置loggin.level.<logger-name>=<level>指定日志级别
日志分组
将相关的logger分组在一起,统一配置。例如:Tomcat相关日志统一设置
SpringBoot预定义两个组
web
org.springframework.core.codec, org.springframework.http, org.springframework.web, org.springframework.boot.actuate.endpoint.web, org.springframework.boot.web.servlet.ServletContextInitializerBeans
sql
org.springframework.jdbc.core,
org.hibernate.SQL,
org.jooq.tools.LoggerListener
文件输出
SpringBoot默认只是把日志写在控制台,如果想要额外记录到文件,可以在application.properties添加logging.file.name或logging.file.path配置。
未指定
未指定
仅控制台输出
指定
未指定
my.log
写入文件
未指定
指定
/var/log
写入指定目录,文件名为spring.log
指定
指定
以loggin.file.name为准
文档归档与滚动切割
归档:每天的日志单独存到一个文档中。
切割:每个文件10MB,超过大小切割成另外一个文件。
每天的日志应单独分割出来存档,如果使用logback,可以通过application.yaml文件指定规则。
如果是其它日志系统,需自行配置(添加log42.xml或log4j-spring.xml)
切换日志组合
log4j2支持yaml和json格式的配置文件
YAML
com.fasterxml.jackson.core:jackson-databind + com.fasterxml.jackson.dataformat:jackson-dataformat-yaml
log4j2.yaml + log4j2.yml
JSON
com.fasterxml.jackson.core:jackson-databind
log4j2.json + log4j2.jsn
最佳实践
导入任何第三方框架之前,首先要排除它的日志包,因为SpringBoot底层控制好了日志。
修改
application.properties配置文件,就可以调整日志的所有行为。甚至可以编写日志框架自己的配置文件放在类路径下就行,比如logback-spring.xml,log4j2-spring.xml如需对接专业日志系统,只需要把
logback记录的日志灌到kafka之类的中间接。
最后更新于