如何强制 spring 不压缩日志文件,而是在日志文件末尾附加日期

How to force spring to do not zip log files, instead append date at end of log file

目前我正在使用 spring 引导日志并且我正在通过 属性 文件对其进行配置 下面是示例日志 属性

spring.main.banner-mode=off
logging.level.root= INFO,ERROR,DEBUG
logging.level.org.springframework.web= ERROR
logging.level.com.concretepage= DEBUG 
logging.pattern.console=
logging.file = D://logTest.log
logging.file.max-size=100MB
spring.output.ansi.enabled=ALWAYS

问题是日志文件备份格式是.gz格式 喜欢 logTest.log.2019-06-14.0.gz

如何排除默认压缩?

我不想在 xml 文件中硬连线配置并将其放入资源文件夹中。 我只能将滚动附加程序配置 xml 文件,但我想在 属性 文件中创建日志文件路径,因此我可以针对不同的环境动态设置它。

有什么办法可以实现这个配置吗?

在 src/main/resources

中创建 logback-spring.xml 文件

有了这个内容

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>

<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.SizeAndTimeBasedRollingPolicy">
            <cleanHistoryOnStart>${LOG_FILE_CLEAN_HISTORY_ON_START:-false}</cleanHistoryOnStart>
            <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <maxFileSize>${LOG_FILE_MAX_SIZE:-10MB}</maxFileSize>
            <maxHistory>${LOG_FILE_MAX_HISTORY:-7}</maxHistory>
            <totalSizeCap>${LOG_FILE_TOTAL_SIZE_CAP:-0}</totalSizeCap>
        </rollingPolicy>
    </appender>

</configuration>

如果 fileNamePattern 不以 gz(或任何其他压缩格式)结尾,logback 将不会压缩文件。

作为@simon-martinelli 正确答案的替代方案,如果您不想使用自定义 logback-spring.xml 文件,可以在您的 Spring 配置参数 logging.pattern.rolling-file-name 中设置application.propertiesapplication.yml 文件。

例如,要禁用所使用的压缩,请从默认文件名模式中删除 .gz 后缀(${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz 根据 https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-custom-log-configuration)。

这需要将以下元素添加到 application.yml 文件中:

logging:
  pattern:
    rolling-file-name: "${LOG_FILE}.%d{yyyy-MM-dd}.%i"

或者如果您使用的是 application.properties,它应该是(免责声明:我没有测试过这个,因为我只使用 YAML 文件):

logging.pattern.rolling-file-name = ${LOG_FILE}.%d{yyyy-MM-dd}.%i