Spring Boot - 日志记录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot - 日志记录相关的知识,希望对你有一定的参考价值。
参考技术A[TOC]
Spring Boot 内部使用的日志框架为 Commons Logging ,但是 Commons Logging 的内部具体实现可以由用户自行指定。
默认已提供了对 Java Utils Logging , Log4J2 和 Logback 日志库的相关配置。
无论选择以上哪一个日记库,Spring Boot 都预置了将日志输出到控制台以及可选的文件上。
如果项目配置使用起步依赖(Starters),那么默认情况下,Spring Boot 使用的日记记录库为 Logback。
因此,本文主要介绍在 Spring Boot 中使用 Logback 进行日志记录。
前面已经介绍过,Spring Boot 默认使用的日志框架为 Apache Commons Logging 。
在 Spring 4.x(也即 Spring Boot 1.x )时,我们需要手动进行依赖导入。
但是在 Spring 5.x(也即 Spring Boot 2.x )时,该依赖由 Spring Framework 模块 spring-jcl 提供。
当我们项目使用各种起步依赖(Starter)时, spring-jcl 模块包含在 spring-boot-starter-logging 中,理论上我们需要手动导入该依赖,如下所示:
但实际上我们无需手动导入该起步依赖,因为几乎每一个起步依赖(比如: spring-boot-starter , spring-boot-starter-web ...)都内置了 spring-boot-starter-logging 。
因此,当我们使用起步依赖创建 Spring Boot 项目时,日志功能开箱即可用。
且日记框架内部默认实现采用 Logback。
还有其他一些设置日志级别的方法,这里就不展开阐述了。
更多内容可参考: Log Levels , zero-configuration-logging
Spring Boot 支持多种不同的日志系统实现,可以通过导入相应的依赖库从而在运行时激活对应的日志系统,并且可以通过在 classpath 或 logging.config 属性指定一个配置文件,实现自定义系统日志配置。
对于不同的日志系统,Spring Boot 会默认加载的日志配置文件如下表所示:
注 :Spring Boot 建议我们使用带有 -spring 后缀的作为日志配置文件名称(即相较于使用 logback.xml ,更建议使用 logback-spring.xml )。
如果使用标准配置路径,Spring 无法完全控制日志初始化过程(因为 logback.xml 的加载时间非常早,导致一些扩展功能无法在其内进行配置,而此时使用 logback-spring.xml 即可解决这个问题)。
我们主要关注的是 Logback 的配置文件内容。
要对 Logback 添加配置文件,只需创建 resources/logback-spring.xml ,然后对该文件进行配置即可,其基本配置内容如下:
注 :日志配置文件路径也可以在 application.properties 中进行指定:
简单对上述 logback-spring.xml 的配置内容进行一些介绍:
更多 Logback 配置文件内容,请参考: A Guide To Logback
可以通过在日志配置文件中使用标签 <springProfile> 来创建不同的环境日志配置。
比如,我们可以通过定义生产环境 prod ,测试环境 test 和开发环境 dev 来实现不同的日志输出,如下所示:
然后,启动服务的时候,设置相应环境的 profile 即可。
比如,可以直接通过命令指定运行环境 profile,如下:
Spring Boot 多环境配置内容,可参考: Spring Boot - 多环境配置
Spring Boot - 记录日志
- 比自己写文本日志的好处
- 默认定义好了一些日志级别,会记录当前使用的级别以上的日志,通常线上环境设置的级别较高记得较少
- 有一些自动split之类的功能
- Commons-logging
- 日志级别:TRACE<DEBUG<INFO<WARN<ERROR<FATAL
- 使用application.yml配置文件
- 自己的类中:private static final Log log = LogFactory.getLog(Xxxx.class);
- 可以只有打开Trace时才打出trace信息,省一点计算机资源:if(log.isTraceEnable()){log.trace("1");}
- SLF4j
- 日志级别:DEBUG<INFO<WARN<ERROR
- 使用application.yml配置文件
- 自己的类中:private static final Logger logger = LogFactory.getLogger(Xxxx.class);
以上是关于Spring Boot - 日志记录的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot 中使用Spring Aop实现日志记录功能
Spring boot - 如何获取 WARN 的框架日志记录和 DEBUG 的应用程序日志记录