LogBack 日志压缩产生上百G的tmp文件问题 logback同时按照日期和大小分割日志

Posted tonggc1668

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LogBack 日志压缩产生上百G的tmp文件问题 logback同时按照日期和大小分割日志相关的知识,希望对你有一定的参考价值。

核心类:TimeBasedRollingPolicy#rollover()方法 
根据源码,找到了两个会清理日志文件的地方。1. 压缩*.zip文件之后,*.tmp会被删除;2. 设置了MaxHistory最大保留期限,是会清理*.zip文件的。

第一种:压缩完之后有一个delete()操作,如果所在用户没有删除的权限的话(这种可能性不大),tmp是不会被清除的 ;还有就是压缩完之后,还未删除tmp文件,应用就死掉了,那么这个tmp是不会被删除的(基本就是这么产生的)
第二种:未设置MaxHistory,默认是不会清理所有的log文件的;假如设置了MaxHistory,它也只是会删除 日期*.zip文件,*.tmp文件是不会被删除的。

解决方案:通过linux脚本定时删除logs/*.tmp 文件

 

<configuration>
  <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>mylog.txt</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
      <!-- rollover daily -->
      <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
       <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
       <maxFileSize>100MB</maxFileSize>    
       <maxHistory>60</maxHistory>
       <totalSizeCap>20GB</totalSizeCap>
    </rollingPolicy>
 
    <encoder>
      <pattern>%msg%n</pattern>
    </encoder>
  </appender>
 
 
  <root level="DEBUG">
    <appender-ref ref="ROLLING" />
  </root>
 
</configuration>
<dependency>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-core</artifactId>
          <version>1.1.8</version>
        </dependency>
        <dependency>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-classic</artifactId>
          <version>1.1.8</version>
        </dependency>
        <dependency>
          <groupId>ch.qos.logback</groupId>
          <artifactId>logback-access</artifactId>
          <version>1.1.7</version>
        </dependency>

 



以上是关于LogBack 日志压缩产生上百G的tmp文件问题 logback同时按照日期和大小分割日志的主要内容,如果未能解决你的问题,请参考以下文章

logback配置按天产生日志文件

logback :项目中运行时 控制台没有logback日志产生 ?

logback日志配置文件

tar压缩,日志,FTP

cmd输出日志到文件

JAVA使用Logback发送日志到控制台文件ELK的最简单用法