Logback日志文件占用存储空间太多,设置保留文件个数,清理之前的文件。

主要由如下三个参数配合使用

maxHistory ,可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件,,例如设置为30的话,则30天之后,旧的日志就会被删除

totalSizeCap,可选节点,用来指定日志文件的上限大小,例如设置为3GB的话,那么到了这个值,就会删除旧的日志,此参数是appender级别的,即使你的文件保存在了不同的日期文件夹下,还是会删除,最多保留此设置的大小

cleanHistoryOnStart 在工程启动时清除日志文件

比如如下appender

fileNamePattern表示日志文件名规则。

MaxFileSize为100MB表示单个日志文件最大100MB。

totalSizeCap表示可保留日志文件的总大小为1GB,每个文件100M,那么也就是最多保留10个文件。

maxHistory表示最多保留10天的日志文件,与totalSizeCap的配置规则一起生效,日志文件满足任意一个条件都会被清除。

cleanHistoryOnStart表示在启动工程时根据配置的规则清理日志。

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${logBase}/${appName}-server.log</file>
<!--SizeAndTimeBasedRollingPolicy策略继承了TimeBasedRollingPolicy策略-->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--每天生成一个文件 %i表示序号 从0开始-->
<fileNamePattern>${logBase}/${appName}-server-%d{yyyy-MM-dd}.log.%i</fileNamePattern>
<!--每个文件的大小限制-->
<MaxFileSize>100MB</MaxFileSize>
<!--最多保留10天的文件,10天之前的将被清除-->
<MaxHistory>10</MaxHistory>
<!--该滚动策略日志的总大小,超过的日志会被清除-->
<totalSizeCap>1GB</totalSizeCap>
<!--启动时清理日志文件 此项置灰清理超过保留天数的 也会清理超过总大小的-->
<cleanHistoryOnStart>true</cleanHistoryOnStart>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - [%X{TRACE_ID}] %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>

注意事项

logback的旧版本有bug,可能导致日志清理策略不生效,具体有如下几种:

1.maxHistory不生效,最低修复该bug的版本为1.1.7。

2.totalSizeCap不生效,最低修复该bug的版本为1.1.8。

3.totalSizeCap不能超过2G缺陷(int型,2g达到了int边界),最低修复该bug的版本为1.2.0。

<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>

Logback设置保留日志文件个数的更多相关文章

  1. TestNG+extentReports+log4j2 完善自动化测试框架——美观的报告和保留日志文件

    1:导入Maven依赖<dependency> <groupId>com.aventstack</groupId> <artifactId>extent ...

  2. docker日志输出文件大小设置以及文件个数限制

    问题描述: 今天有同事运行了一个docker容器,不多时就导致宿主机硬盘直接撑爆,消耗了120G,发生的很是突然. 问题排查: 后续查阅资料,发现是因为docker中的某个进程一直在持续输出,而这些输 ...

  3. 【spring boot logback】日志logback 生成日志文件在本项目下,而不在指定的日志文件目录下/指定日志文件到达最大值后不按照配置进行切割

    原本的日志文件配置如下: <?xml version="1.0" encoding="UTF-8"?> <configuration scan ...

  4. Oracle_管理控制文件和日志文件

    控制文件: 控制文件在数据库创建时被自动创建,并在数据库发生物理变化时更新.控制文件被不断更新,并且在任何时候都要保证控制文件是可用的.只有Oracle进程才能安全地更新控制文件的内容,所以,任何时候 ...

  5. 事务日志以及虚拟日志文件(VLFs)概述

    Part 1:事务日志 每个 SQL Server 数据库都具有事务日志,用于记录所有事务以及每个事务对数据库所做的修改.必须定期截断事务日志以避免它被填满.但是,一些因素可能延迟日志截断,因此监视日 ...

  6. Log4j的扩展-支持设置最大日志数量的DailyRollingFileAppender

    Log4j现在已经被大家熟知了,所有细节都可以在网上查到,Log4j支持Appender,其中DailyRollingFileAppender是被经常用到的Appender之一.在讨论今天的主题之前, ...

  7. Python实现日志文件写入或者打印--类似于Java的Log4j

    开发过Java的应该都知道Log4j的重要性,尤其是在开发测试中,能够让开发和测试人员方便找的bug,Python也有和Log4j相同功能的库那就是logging库,其功能非常强大,在开发测试中很方便 ...

  8. 切分 Tomcat 的 catalina.out 文件,解决日志文件过大的问题

    原文:http://unmi.cc/split-tomcat-catalina-out-file Linux 下使用 cronolog 工具来切分 catalina.out 这里重点介绍这种方法,具体 ...

  9. MySQL数据库日志文件(redo与undo)

    +++++++++++++++++++++++++++++++++++++++++++标题:MySQL数据库日志文件时间:2019年2月25日内容:MySQL数据库日志文件(redo日志和undo日志 ...

随机推荐

  1. zabbix web管理页面 中文乱码问题

    1.在自己电脑上找下图文件,C:\Windows\Fonts 2.上传到 /usr/share/zabbix/assets/fonts/ 目录下 可以看到 graphfont.ttf 是 /etc/a ...

  2. shell 脚本静默安装oracle11g

    以下脚本的手动安装连接:  https://www.cnblogs.com/leihongnu/p/12698593.html [ #/bin/bash#安装日志touch /root/message ...

  3. java随手记 面向对象

    // 可以把两个类放在同一个文件中,但文件中只能有一个类是公共类,且公共类必须与文件同名,即xxx.java,源代码中的每个类编译成class文件 // java库中的类 // java.util.* ...

  4. windows端口占用处理方法

    (1)输入命令:netstat -ano,列出所有端口的情况.在列表中我们观察被占用的端口,比如是8081,首先找到它.C:\Users\Administrator>netstat -ano活动 ...

  5. 02 | 顶层对象和global对象

    顶层对象的属性 顶层对象,在浏览器环境指的是window对象,在Node指的是global对象.ES5之中,顶层对象的属性与全局变量是等价的. window.a = 1; a // 1 a = 2; ...

  6. 删除html标签,取其中的文本

    public String removeHtmlTags() { String str = "<p><b> welcome to test</b>< ...

  7. sqlalchemy insert or ignore

    insert ignore # insert ignoreinsert_stmt = TimePoint.__table__.insert().prefix_with(" ignore&qu ...

  8. [bzoj5508]甲苯先生的字符串

    首先定义状态f[i][j]表示长度为i的串以j为结尾有多少符合条件的串,发现$f[i][j]=\sum f[i-1][k]$(j和k可以相邻),这个用矩阵乘法优化一下即可. 1 #include< ...

  9. [noi795]保镖

    容易证明,最终方案一定是某一个排列无限循环,那么就要满足$\sum ai<=max(bi+ai)$,对所有数按照ai+bi排序后,枚举最大值,用权值线段树维护之前的ai最少要选几个 1 #inc ...

  10. Java安全之Axis漏洞分析

    Java安全之Axis漏洞分析 0x00 前言 看到个别代码常出现里面有一些Axis组件,没去仔细研究过该漏洞.研究记录一下. 0x01 漏洞复现 漏洞版本:axis=<1.4 Axis1.4 ...