Skip to main content

SpringBoot Logging篇

本篇文章主要介绍springboot中的logging设计与使用。文章梳理来源于 feature#loggingspring-boot 所有的内部使用日志都是用的 commons-logging,但是Spring-Boot 框架对日志系统使用是开放的,默认提供了 common-logginglog4j2logback 的实现,具体加载逻辑可以参考 浅析 spring-boot log日志加载

配置约定#

日志级别#

全局级别设置#

springboot 默认使用的日志级别是 INFO, 通常你可以根据设置 配置文件或者 启动命令参数 来指定日志级别,这样springboot根据所指定的级别,打印核心组件日志。

  1. 启动参数

    --debug | --trace

  2. 配置文件

    debug=true | trace=true

指定 logger-name#

也可以使用 logging.level.<logger-name>=<level> 指定 级别的日志。如:

logging.level.root=warnlogging.level.org.springframework.web=debuglogging.level.org.hibernate=error

日志颜色#

如果你的日志输出工具支持 ANSI, springboot允许设置 spring.output.ansi.enabled=ALWAYS(ansi属性值参考)来支持颜色的输出。

日志输出#

日志默认输出到 console 控制台 , 当然可以根据配置 logging.file.name 或者 logging.file.path 来指定日志输出文件名或者路径,他们都可以使用相对路径或者绝对路径,当两者都配置,优先取 logging.file.name。 具体可以看以下对比:

logging.file.namelogging.file.pathdemo说明
nono输出控制台
yesnoapplication.log输出到当前路径下application.log文件中
noyes/var/log输出到 /var/log 路径下 spring.log 文件中

日志文件在达到 10mb(loggin.file.max-size可以修改) 时就会旋转生成新文件。

日志滚动#

日志滚动或者其它更详细配置主要还是看你所引用的第三方日志系统,默认配置项可以看 file-rotation

日志分组#

可以将多个日志包分为成一个组,这样我们可以按组统一配置,比如可以配置日志级别。请参考

#定义demo分组logging.group.demo=org.springframework.boot.SpringApplication,com.example.demo.DemoApplication#统一将demo组日志级别设置为debuglogging.level.demo=debug

spring boot 默认有 web sql 两个分组。点击 logging.log-groups 查看详情

总结#

本篇文章主要还是介绍 spring boot logging 的配置使用。如果有同学想要了解更多,建议大家可以先看看 spring-boot.jarorg.springframework.boot.logging 包下的 javalog4j2logback包下相关源码,里面也可以发现相关默认配置和实现。