【问题标题】:How to force spring to do not zip log files, instead append date at end of log file如何强制spring不压缩日志文件,而是在日志文件末尾附加日期
【发布时间】:2019-10-28 23:48:57
【问题描述】:

目前我正在使用 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 文件中硬连线配置并将其放在资源文件夹中。 我只能放滚动appender配置xml文件,但是我想在属性文件中制作日志文件路径,所以我可以为不同的环境动态设置它。

有没有办法实现这个配置?

【问题讨论】:

    标签: spring-boot logging log4j2


    【解决方案1】:

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

    例如,要禁用使用的压缩,请从默认文件名模式中删除 .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
    

    【讨论】:

      【解决方案2】:

      在 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。有效。我只需要对属性文件进行小幅更正。我必须删除这个空属性 logging.pattern.console=,并且还需要删除 ${LOG_FILE},因为我已经提到了日志属性中的文件。
      猜你喜欢
      • 2013-12-04
      • 2015-08-15
      • 2014-05-20
      • 1970-01-01
      • 2013-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多