【问题标题】:Spring Boot : Log File in current date directory and rolloverSpring Boot:当前日期目录中的日志文件和翻转
【发布时间】:2019-11-25 03:32:01
【问题描述】:

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

  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 版本

【问题讨论】:

    标签: java spring spring-boot logging


    【解决方案1】:

    首先,我不喜欢这个解决方案……但它确实有效……

    1. 在启动 Spring Boot 之前声明一个“timestamp”属性。
    public static void main(String[] args) {
      System.setProperty("timestamp", Constants.ISO_YYYY_MM_DD_FORMAT.format(System.currentTimeMillis()));
      SpringApplication app = new SpringApplication(MainConfig.class);
      app.setBannerMode(Banner.Mode.OFF);
      app.run(args);
    }
    
    1. 在 application.properties 中

    logging.path=${folder.deploy}/logs/${timestamp}

    1. 在 logback.xml 中,导入属性

    你走吧……

    我仍然认为必须有一个 application.properties ONLY 解决方案...

    【讨论】:

      【解决方案2】:

      试试这个:

      <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>
      

      就像滚动只覆盖文件名而不是日志文件目录。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-01
        • 2020-04-22
        • 1970-01-01
        • 2021-06-04
        • 1970-01-01
        • 2018-12-01
        • 2017-05-04
        相关资源
        最近更新 更多