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>

原文地址:https://www.cnblogs.com/tonggc1668/p/10095598.html

时间: 2024-10-02 08:12:13

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

[Java][log4j]支持同时按日期和文件大小分割日志

根据DailyRollingFileAppender和RollingFileAppender改编,支持按日期和文件大小分割日志. 源文件: Java代码   package com.bao.logging; import java.io.File; import java.io.IOException; import java.io.Writer; import java.text.SimpleDateFormat; import java.util.Calendar; import java.

log4j 支持同时按日期和文件大小分割日志

重写源代码,可以将代码作为工具类使用: 1.Log4JDateAndSizeSplit.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70

使用 HTTP 上传 G 级的文件之 Node.js 版本

不管喜欢与否,javascript无处不在. 我们可以在客户端的前台应用中找到它,也可以在大量的框架.类库中找到它,而且可以在服务器端的后台应用中找到它. 近年来, Javascript越来越流行,这似乎是由于 Javascript 生态系统正在帮助提高生产率.减少入门所需的时间. 在我的第一篇文章中,我介绍了使用 ASP.NET Web 后端 API 实现 G级文件上传,发表完这篇文章后,我决定试一下使用 Node.js 能否达到同样的效果.  这意味着我需要实现 UploadChunk和 M

python 按照日期切分大日志文件(重点)和按照指定大小切分日志文件

#! /usr/bin/env python # -*- coding:utf8 -*- # 切分nginx 按照日期切分日志文件 from __future__ import division import os,sys big_file='/data/logs/media.net.error.log' # 按照文件大小拆分 def split_by_filesize(fromfile,todir,chunksize=0): """ chunksize: 字节建议每100M

UCloud物理云网关百G级集群设计实践

物理云主机是UCloud提供的专用物理服务器,具备出色的计算性能,满足核心应用场景对高性能及稳定性的需求,也能和其它产品灵活搭配.物理云网关用于承载物理云和公有云各产品间的内网通信,由于用户有多地部署的必要,网关集群面临跨地域跨集群的流量压力. 我们用多隧道流量打散等手段解决了Hash极化造成的流量过载问题,并通过容量管理和隔离区无损迁移限制大象流.新方案上线后,集群从承载几十G升级为可承载上百G流量,帮助达达等用户平稳度过双十一的流量高峰.以下是实践经验分享.一 一.流量过载的物理云 为了保证

将android客户端的错误日志压缩上传到服务器

原文:将android客户端的错误日志压缩上传到服务器 源代码下载地址:http://www.zuidaima.com/share/1550463760370688.htm

shell脚本:日志切割与上传

脚本说明: 日志切割与上传类脚本的功能:脚本自身的运行日志记录与清理.日志切割与打包.ftp上传.传送失败自动重传.断电自动补传.清理超期旧打包等 -------------------- #!/bin/bash # Cut and upload aclog log # by colin # revision on 2016-06-15 ######################################## # 功能说明:该脚本运用于上传aclog日志 # # 使用说明: #+ ./a

【转】java日志组件介绍(common-logging,log4j,slf4j,logback )

common-logging common-logging是apache提供的一个通用的日志接口.用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging, common-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志库.当然,common-logging内部有一个Simple logger的简单实现,但是功能很弱.所以使用common-logging,通常都是配合着log4j来使用.使用它的好处就是,代码依赖是common-loggin

java日志组件介绍(common-logging,log4j,slf4j,logback)

common-logging common-logging是apache提供的一个通用的日志接口.用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging, common-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志库.当然,common-logging内部有一个Simple logger的简单实现,但是功能很弱.所以使用common-logging,通常都是配合着log4j来使用.使用它的好处就是,代码依赖是common-loggin