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

时间:2019-06-14 10:40:49

标签: spring-boot logging log4j2

当前,我正在使用Spring Boot日志,并且正在通过属性文件进行配置 下面是示例日志记录属性

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文件,但是我想在属性文件中创建日志记录文件路径,因此可以针对不同的环境动态设置它。

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

2 个答案:

答案 0 :(得分:1)

在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将不会压缩文件。

答案 1 :(得分:0)

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

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

这将需要在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