【Spring】日志配置、日志持久化、配置文件分割、日志格式

日志配置

上述是日志的使用,日志框架支持我们更灵活的输出日志,包括内容、格式等

配置日志级别

日志级别配置只需要在配置文件中设置“logging.level”配置即可,如下所示

logging:   
  level:   
    root: debug

日志持久化

以上的日志都是输出在控制台上的,然而在线上的环境中,我们需要把日志保存下来,以便出现问题之后追溯问题。把日志保存下来就叫持久化

日志持久化有两种方式

  1. 配置日志文件名
  2. 配置日志的存储目录
    image.png

相关配置

配置日志文件的路径和文件名

logging:
  file:  
    name: logger/springboot.log
  • 运行结果显示,日志内容保存在了对应目录下image.png

配置日志文件的保存路径

# 设置日志文件的目录
logging:
  file:  
    name: /Users/yechiel/Desktop
  • 这种方式只能设置日志的路径,文件名为固定的 spring.log
  • 运行程序,该路径下出现了一个日志文件image.png|124

注意

  • logging.file.namelogging.file.path 两个都配置的情况下,只生效其一,以 logging.file.name 为准

配置文件分割

如果我们的日志都放在一个文件中,随着项目的运行,日志文件会越来越大,需要对日志文件进行分割

  • 当然,日志框架也帮我考虑到了这一点,所以如果不进行配置,就走自动配置
  • 默认日志文件超过 10M 就进行分割
配置项说明默认值
logging. logback. rollingpolicy. file-name-pattern日志分割后的文件名格式${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz
logging. logback. rollingpolicy. max-file-size日志文件超过这个大小就自动分割10MB

配置文件分割:

logging:
  logback:  
  rollingpolicy:  
    file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i  
    max-file-size: 1KB
  1. 日志文件超过 1KB 就分割(设置 1KB 是为了更好展示。企业开发通常设置为 200MB500MB 等,此处没有明确标准)
  2. 分割后的日志文件名为:日志名.日期.索引

运行项目,多打印一些日志,日志分割结果:image.png|303

配置日志格式

目前打印的格式是默认的image.png

打印日志的格式,也是支持配置的。支持控制台和日志文件分别设置

配置项说明默认值
logging. pattern. console控制台日志格式%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM- dd'T'HH:mm:ss.SSSXXX}}){faint}%clr(${LOG_LEVEL_PATTERN:-%5p})%clr(${PID:-}){magenta}%clr(---){faint}%clr([%15.15t]){faint}%clr(%-40.40logger{39}){cyan}%clr(:){faint}%m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}
logging. pattern. file日志文件的日志格式%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM- dd'T'HH:mm:ss.SSSXXX}}${LOG_LEVEL_PATTERN:-%5p}${PID:-} ---[%t]%-40.40logger{39}: %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}
配置项说明:
  1. %clr (表达式){颜色}设置输入日志的颜色
    • blue
    • cyan
    • faint
    • green
    • magenta
    • red
    • yellow
  2. %d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM- dd'T'HH:mm:ss.SSSXXX}} 日期和时间——精确到毫秒
    • %d{} 日期
    • ${LOG_DATEFORMAT_PATTERN:-yyyy-MM- dd'T'HH:mm:ss.SSSXXX} 非空表达式,获取系统属性 LOG_DATEFORMAT_PATTERN。若此属性不存在,则使用 -yyyy-MM- dd'T'HH:mm:ss.SSSXXX 格式。系统属性可以通过 System.getProperty("LOG_DATEFORMAT_PATTERN") 获取
  3. %5p 显示日志级别 errorwarninfodebugtrace
  4. %t 线程名;%c 类的全限定名;%M method;%L 为行号;%thread 线程名称;%m 或者 %msg 显示输出消息;%n 换行符
  5. %5 若字符⻓度⼩于 5,则右边⽤空格填充。%-5 若字符⻓度⼩于 5,则左边⽤空格填充。%.15 若字符⻓度超过 15,截去多余字符。%15.15 若字符⻓度⼩于 15,则右边⽤空格填充。若字符⻓度超过 15,截去多余字符

设置了颜色,但没有生效?
需要配置,让 idea 支持控制台颜色显示

  1. 打开启动配置,添加 VM optionimage.png
  1. 添加 VM option -Dspring.out.ansj.enabled=ALWAYSimage.png
  2. 重新启动程序,就会发现控制台支持颜色了

配置文件

logging:
  pattern:  
    console:  '%d{yyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n'  
    file:  '%d{yyyy-MM-dd HH:mm:ss.SSS} %c %M %L [%thread] %m%n'
  • 项目运行,观察日志变化:image.png

更简单的日志输出

每次都使用 LoggerFactory.getLogger(xxx.class) 很繁琐,且每个类都添加一遍,Lombok 给我们提供了一种更简单的方式

  1. 添加 Lombok 框架支持
  2. 使用 @Slf4j 注解输出日志

添加 lombok 依赖

<dependency>  
    <groupId>org.projectlombok</groupId>  
    <artifactId>lombok</artifactId>  
    <optional>true</optional>  
</dependency>

输出日志

import lombok.extern.slf4j.Slf4j;  
import org.springframework.web.bind.annotation.RestController;  
  
@RestController  
@Slf4j  
public class LogController {  
    public void log() {  
        log.info("========要输出日志的内容========");  
    }  
}

lombok 提供的 @Slf4j 会帮我们提供一个日志对象 log,我们直接使用就可以image.png

总结

  1. 日志是程序中的重要组成部分,使用日志可以快速的发现和定位问题,SpringBoot 内置了日志框架,默认使用的是 info 日志级别将日志输出到控制台的,我们可以通过 Lombok 提供的 @Slf4j 注解和 log 对象快速的打印自定义日志
  2. 日志包含了 6 个级别,日志级别越高,收到的日志信息也就越少,我们可以通过配置日志的保存名称或保存目录来将日志持久化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值