Spring boot - 备份日志文件数限制为 7 个

2022-09-03 09:34:37

在我们的 spring-boot 项目中,我们使用 slf4j 进行日志记录。以下是我们在应用程序.属性文件中添加的配置

logging.file=/opt/logs/my_log.log
logging.level.org.springframework.web=INFO
logging.level.org.hibernate=INFO
logging.level.nl.yestelecom.boss=DEBUG
logging.level.com.github.isrsal.logging.LoggingFilter=DEBUG

仅生成7个备份文件(my_log.log.1,my_log.log.2 ...,my_log.log.7),每个文件的大小为10.5MB,之后根本不会发生日志记录。

有没有办法改变这种行为?

我们研究了弹簧靴的可用属性,但没有找到任何东西。任何建议都值得赞赏。


答案 1

Spring-Boot 只允许在 application.properties 中配置有限的属性。请参阅此处的列表

Spring-boot 使用的默认(开箱即用)配置在 base.xml 中定义。请参阅此处的 base.xml 配置,其中包含此文件追加器

有 2 种方法可以添加额外配置

  1. 添加日志回溯弹簧.xml

如果在项目的类路径中存在名为 logback-spring 的 logback 配置 XML.xml则在初始化时由 Spring-Boot 拾取。

  1. 指向应用程序.属性中的配置文件

在 application.properties 中,使用以下内容指向您的自定义日志返回 XML

logging.config= # Location of the logging configuration file. For instance `classpath:logback.xml` for Logback

使用上述 2 个步骤中的任何一个添加额外配置后,可以在自定义 XML 中提及翻转策略,如下所示

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <charset>UTF-8</charset>
            <Pattern>%d %-4relative [%thread] %-5level %logger{35} - %msg%n</Pattern>
        </encoder>
    </appender>
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <file>${LOG_FILE}</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>${LOG_FILE}.%i</fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>10</maxIndex>
        </rollingPolicy>
        <triggeringPolicy
        class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <root level="DEBUG">
        <appender-ref ref="CONSOLE" />
        <appender-ref ref="FILE"/>
    </root>
</configuration>

答案 2

SFL4J只是包装器。您需要为日志备份库添加额外的配置:

<configuration>
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logFile.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- daily rollover -->
      <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>

      <!-- keep 30 days' worth of history capped at 3GB total size -->
      <maxHistory>30</maxHistory>
      <totalSizeCap>3GB</totalSizeCap>

    </rollingPolicy>

    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
  </appender> 

  <root level="DEBUG">
    <appender-ref ref="FILE" />
  </root>
</configuration>

在这种情况下,我们有过去30天的日志,但不超过3GB。


推荐