【SpringBoot】深入解析日志配置:配置日志级别、通过设置日志文件的文件名或路径实现日志持久化和配置分割日志文件大小、分割后的文件名格式和通过 lombok 依赖使用 @slf4j 实现日志输出

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


日志配置


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


配置日志级别


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


yml 配置

logging:
  level:
    root: debug

重新运行上述代码,观察结果

在这里插入图片描述


分目录指定级别

  • Spring 只会打印等于或高于默认日志级别日志级别

  • 如果我们想要打印某一个文件低于默认日志级别的日志,可以使用分目录单独指定这个文件的默认日志级别:

在这里插入图片描述


日志持久化


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

把日志保存下来就叫持久化


日志持久化有两种方式:

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

Common Application Properties :: Spring Boot我们打开官网,找到 logger 相关的配置

在这里插入图片描述


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

yml 配置

# 设置日志文件的文件名
logging:
  file:
    name: log.log

后面可以跟绝对路径或者相对路径


在这里插入图片描述


配置好文件后,我们重新运行程序,再刷新一下硬盘,会发现 idea 生成了一个 log.log 的文件:

在这里插入图片描述


我们在配置文件中指定一下绝对路径,就是指相对于当前项目的路径(相对路径会出现 D盘/…)

在这里插入图片描述


重新启动项目,刷新一下硬盘,运行结果显示,相对于当前项目新创建了一个 log 包,包中存放着指定名称的日志文件,该文件存放日志内容:

在这里插入图片描述


配置日志文件的保存路径

YAML 格式:

logging:
  file:
    path: "D:/temp"

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

这种方式只能设置日志的路径,文件名为固定的 spring.log


运行程序,该路径下多出一个日志文件:spring.log

在这里插入图片描述


注意
logging.file.namelogging.file.path两个都配置的情况下,只生效其一;

logging.file.name为准,也就是无论配置的先后顺序,都只生效logging.file.name

在这里插入图片描述


日志文件分割


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

  • 当然,日志框架也帮我们考虑到了这一点,所以如果不进行配置,就走自动配置

  • 默认日志文件超过10M就进行分割

在这里插入图片描述


配置日志文件分割

YAML 配置

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

在这里插入图片描述


项目运行,多打印一些日志,然后刷新硬盘,日志分割结果:

在这里插入图片描述

注意:分割的日志不会一个按照指定的分割大小来分割,比如上面的 1KB,打满 1KB 后,还会继续打印完一整行日志剩下的内容,才会分割下一个文件,这样的机制保证了日志的完整性


在这里插入图片描述


我们可以指定日志分割后的文件名称格式:

在这里插入图片描述


在这里插入图片描述


配置日志颜色


目前日志打印的格式是默认的

在这里插入图片描述


设置了颜色,却没有生效?

需要配置,让idea支持控制台颜色显示

  1. 打开启动配置,添加VM options

在这里插入图片描述


  1. 添加 VM options -Dspring.output.ansi.enabled=ALWAYS

在这里插入图片描述


  1. 重新启动程序,就发现控制台支持颜色了

在这里插入图片描述


更简单的日志输出


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

  1. 添加lombok框架支持

  2. 使用@slf4j注解输出日志。


添加 lombok 依赖


Maven 依赖配置

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

输出日志


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

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@RestController
public class LogController {
    public void log(){
        log.info("--------------要输出日志的内容----------------");
    }
}

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

在这里插入图片描述


总结


  1. 日志是程序中的重要组成部分,使用日志可以快速的发现和定位问题;

  2. Spring Boot 内容了日志框架,默认情况下使用的是info日志级别将日志输出到控制台的;

  3. 我们可以通过 lombok 提供的 @Slf4j 注解和 log 对象 快速的打印自定义日志

  4. 日志包含6个级别,日志级别越高,收到的日志信息也就越少;

  5. 我们可以通过配置日志的保存名称保存目录来将日志持久化


在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值