首页 > 解决方案 > Spring Boot:当前日期目录中的日志文件和翻转

问题描述

我的要求是在当前日期目录中打印日志,并且日志需要在当前日期目录中翻转,条件如下:

  1. 要么达到最大文件大小
  2. 或日期已更改

所以今天的日期是 16/07/2019 所以目录结构应该是

16_07_2019/fde.log(当前日志)

16_07_2019/fde.1.log(由于最大大小)

16_07_2019/fde.2.log(由于最大大小)

15_07_2019/fde.log(昨天的日志)

15_07_2019/fde.1.log(昨天的日志由于最大大小)

我的 logback.xml 是:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true">

    <include resource="org/springframework/boot/logging/logback/defaults.xml"/>

    <appender name="FILE"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/VVV/AA/%d{yyyy_MM_dd}/fde.log</file>
        <rollingPolicy
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- rollover daily -->
            <fileNamePattern>/VVV/AA/%d{yyyy_MM_dd}/fde.%i.log
            </fileNamePattern>
            <maxFileSize>2MB</maxFileSize>
        </rollingPolicy>
        <encoder>
            <pattern>%d{MM:dd HH:mm:ss.SSS} [%t] [%level] [%logger{36}] - %msg%n
            </pattern>
        </encoder>
    </appender>

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

它不是创建当前日期目录,而是创建%d{yyyy_MM_dd}目录。我不确定为什么?

另外,根据我的要求,这个 xml 看起来不错吗?

使用 SpringBoot:2.0.5 版本

标签: javaspringspring-bootlogging

解决方案


尝试这个:

<file>/VVV/AA/logs/fde.log</file>
<rollingPolicy
    class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
    <!-- rollover daily -->
    <fileNamePattern>/VVV/AA/logs/fde-%d{yyyy_MM_dd}.%i.log</fileNamePattern>
    <maxFileSize>2MB</maxFileSize>
</rollingPolicy>

如滚动仅覆盖文件名而不是日志文件目录。


推荐阅读