【Spring】_配置Spring日志

发布于:2025-02-14 ⋅ 阅读:(29) ⋅ 点赞:(0)

目录

1. 配置日志级别

1.1 配置方法

1.2 代码示例

2. 分目录打印日志

2.1 配置方法

2.2 配置示例

3. 日志持久化

3.1 方式1:配置文件名

3.2 方式2:配置路径

4. 分割日志文件

4.1 配置分割文件最大大小

4.2 配置分割文件的名称定义规则


在专栏前文中已经介绍Spring日志级别:

【Spring】_打印Spring日志-CSDN博客文章浏览阅读55次。2、SLF4J是门面模式的典型应用,门面模式又称外观模式,提供了一个统一的接口,用来访问子系统中的一群接口,主要特征是定义了一个高层接口,让子系统更容易使用;注:1、日志对于系统运行信息的反映相对而言是滞后的,FATAL级已无法使用日志打印,故而只提供了其余四种级别的日志输出方法;1、SLF4J是一个日志框架,但SLF4J不是一个真实的日志框架实现,只是一个日志门面。2、ERROR:错误信息,级别较高的错误日志信息,但仍然不影响系统的继续运行;3、WARN:警告信息,不影响使用,但需要注意的问题; https://blog.csdn.net/m0_63299495/article/details/145556573本文主要介绍日志的相关配置。

创建LoggerController,其内容如下:

package com.example.iocdemo1.Controller;

import jakarta.annotation.PostConstruct;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class LoggerController {
    private static Logger logger= LoggerFactory.getLogger(LoggerController.class);
    @PostConstruct
    public void print(){
        logger.error("Error log");
        logger.warn("Warn log");
        logger.info("Info log");
        logger.debug("Debug log");
        logger.trace("Trace log");
    }
}

1. 配置日志级别

1.1 配置方法

在application.yml中修改Spring的默认日志级别,以实现更多级别日志的打印;

root表示根目录,在application.yml中,使用root配置所有日志的默认级别

 application.yml日志内容如下:

logging:
  level:
    root: debug

1.2 代码示例

启动程序,日志输出如下:

可见高于等于DEBUG级别的日志均打印,仅TRACE级别的日志没有打印;

2. 分目录打印日志

在上例中,可见当将默认打印日志级别设置为DEBUG会打印较多日志,现试对日志进行分目录打印,以Spring日志打印INFO及其以上级别,项目日志打印DEBUG为例

2.1 配置方法

可在Spring官网查看关于更多日志级别配置:

若需将Spring日志和项目日志打印的级别进行区分,则需将项目目录进行配置,如对于当前目录,其目录结构如下:

则当前项目目录为com.example.iocdemo1,使用该目录进行默认日志打印级别的配置。

2.2 配置示例

配置yml文件如下:

logging:
  level:
    root: info
    com:
      example:
        iocdemo1: debug

重新启动程序,查看日志:

3. 日志持久化

日志持久化即对日志进行长久的保存,将数据保存在数据库中,将日志保存在文件中都是持久化的方式。

可在Spring官网查看关于更多日志级别配置:

有两种配置方式:

(1)使用logging.file.name配置文件名;

(2)使用logging.file.path配置文件路径;

3.1 方式1:配置文件名

配置yml文件内容如下:

logging:
  level:
    root: info
    com:
      example:
        iocdemo1: debug
  file:
    name: zhouyou.log

重启项目进行刷新,在项目目录中可见zhouyou.log:

也可在资源管理器中查看,若未限制路径,则该文件默认在工程目录下:

name也可以配置日志路径:记为logger包下的ioc.log:

yml文件如下:

logging:
  level:
    root: info
    com:
      example:
        iocdemo1: debug
  file:
    name: logger/ioc.log

重新启动程序,可在目录处查看到文件:

3.2 方式2:配置路径

使用logging.file.path可以设置文件路径,且默认名为spring.log。且不能设置名称,否则会被解析为多层目录,再将文件名设置为spring.log;

配置yml文件如下:

logging:
  level:
    root: info
    com:
      example:
        iocdemo1: debug
  file:
     path: logger1

重启程序,可在目录处查看到文件:

总结:

logging.file.name既可用于配置文件名,也可以用于配置路径,logging.file.path只可以用于配置路径。当二者同时存在时,path就会失效,name的优先级更高

通常使用logging.file.name进行配置;

4. 分割日志文件

如果将所有日志都放在一个文件中,则随着项目运行,日志文件会越来越大,则需对日志文件进行分割;

可在Spring官网查看关于更多日志级别配置:

4.1 配置分割文件最大大小

yml文件如下,表示当日志文件大于1KB时就进行分割:

logging:
  level:
    root: info
    com:
      example:
        iocdemo1: debug
  file:
    name: logger/ioc.log
  logback:
    rollingpolicy:
      max-file-size: 1KB

(若当前输出日志文件大小不够1KB而无法观察分割效果,可将默认打印日志级别降为debug,以产生更多日志信息)

重启程序,可见日志文件分割效果:

4.2 配置分割文件的名称定义规则

在官网中可查看到默认值:${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz

现将日志文件后缀的.gz删除,yml文件如下:

logging:
  level:
    root: info
    com:
      example:
        iocdemo1: debug
  file:
    name: logger/ioc.log
  logback:
    rollingpolicy:
      max-file-size: 1KB
      file-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i

重启程序查看目录处的日志文件名称格式: 

注:1、关于最大分割大小:日志文件的分割是以行来分割而不是以字符分割的

假设当前max-file-size设为1KB,并不是达到1KB就立即分割,会将本行日志存储后再进行分割;

2、企业中通常日志分割大小为200M或500M;