首页 > 解决方案 > 如何增加 Spring Boot logback-spring.xml 的日志记录天数

问题描述

任何帮助或提示将不胜感激!!

我的 SpringBoot 应用程序仅记录 1 天。我希望它记录超过 30 天。

logback-spring.xml

<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <charset>UTF-8</charset>
        <pattern>${CONSOLE_LOG_PATTERN}</pattern>
    </encoder>
</appender>

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <encoder>
        <charset>UTF-8</charset>
        <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>

<logger name="ca.test.hub" level="INFO" additivity="false">
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="FILE"/>
</logger>
<logger name="org.apache.cxf" level="INFO" additivity="false">
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="FILE"/>
</logger>
<logger name="org.hibernate" level="DEBUG" additivity="false">
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="FILE"/>
</logger>
<logger name="org.springframework" level="INFO" additivity="false">
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="FILE"/>
</logger>

应用程序.yml:

logging:

文件:logs/test.log 模式:控制台:“%d{dd-MM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M - %msg%n”文件:“%d{dd-MM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M - %msg%n”级别:root:INFO

标签: spring-boot

解决方案


如果您想保留日志文件超过 30 天,最好不要使用FixedWindowRollingPolicy( documentation ),如果您只想限制保存在文件系统上的日志文件的数量,则使用此方法。

如文档SizeAndTimeBasedRollingPolicy所述,更适合您的要求的附加程序是

归档[s] 文件基本上按日期,但同时限制每个日志文件的大小

我建议的对您当前FILE附加程序的编辑将是这样的

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <encoder>
        <charset>UTF-8</charset>
        <pattern>${FILE_LOG_PATTERN}</pattern>
    </encoder>

    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
        <fileNamePattern>${LOG_FILE}-%d{yyyy-MM-dd}.%i</fileNamePattern>
        <maxFileSize>10MB</maxFileSize>
        <maxHistory>30</maxHistory>
    </rollingPolicy>
</appender>

这使用(LOG_FILE 当然是变量的值)SizeAndTimeBasedRollingPolicy存储文件。每次达到大于 10MB 的大小时,该文件都会翻转 - 然后将创建一个新文件 , 并将其写入。fileNamePattern LOG_FILE-2019-05-02.0${LOG_FILE}LOG_FILE-2019-05-02.1

第一个要在午夜之后写入的日志将创建一个新文件,LOG_FILE-2019-05-03.0然后写入它。超过 30 天的日志文件将被删除。调整配置以最适合您的需求。

我建议您阅读此附加程序的文档以获取更多详细信息。


推荐阅读