Logback设置保留日志文件个数
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设置保留日志文件个数的更多相关文章
- TestNG+extentReports+log4j2 完善自动化测试框架——美观的报告和保留日志文件
1:导入Maven依赖<dependency> <groupId>com.aventstack</groupId> <artifactId>extent ...
- docker日志输出文件大小设置以及文件个数限制
问题描述: 今天有同事运行了一个docker容器,不多时就导致宿主机硬盘直接撑爆,消耗了120G,发生的很是突然. 问题排查: 后续查阅资料,发现是因为docker中的某个进程一直在持续输出,而这些输 ...
- 【spring boot logback】日志logback 生成日志文件在本项目下,而不在指定的日志文件目录下/指定日志文件到达最大值后不按照配置进行切割
原本的日志文件配置如下: <?xml version="1.0" encoding="UTF-8"?> <configuration scan ...
- Oracle_管理控制文件和日志文件
控制文件: 控制文件在数据库创建时被自动创建,并在数据库发生物理变化时更新.控制文件被不断更新,并且在任何时候都要保证控制文件是可用的.只有Oracle进程才能安全地更新控制文件的内容,所以,任何时候 ...
- 事务日志以及虚拟日志文件(VLFs)概述
Part 1:事务日志 每个 SQL Server 数据库都具有事务日志,用于记录所有事务以及每个事务对数据库所做的修改.必须定期截断事务日志以避免它被填满.但是,一些因素可能延迟日志截断,因此监视日 ...
- Log4j的扩展-支持设置最大日志数量的DailyRollingFileAppender
Log4j现在已经被大家熟知了,所有细节都可以在网上查到,Log4j支持Appender,其中DailyRollingFileAppender是被经常用到的Appender之一.在讨论今天的主题之前, ...
- Python实现日志文件写入或者打印--类似于Java的Log4j
开发过Java的应该都知道Log4j的重要性,尤其是在开发测试中,能够让开发和测试人员方便找的bug,Python也有和Log4j相同功能的库那就是logging库,其功能非常强大,在开发测试中很方便 ...
- 切分 Tomcat 的 catalina.out 文件,解决日志文件过大的问题
原文:http://unmi.cc/split-tomcat-catalina-out-file Linux 下使用 cronolog 工具来切分 catalina.out 这里重点介绍这种方法,具体 ...
- MySQL数据库日志文件(redo与undo)
+++++++++++++++++++++++++++++++++++++++++++标题:MySQL数据库日志文件时间:2019年2月25日内容:MySQL数据库日志文件(redo日志和undo日志 ...
随机推荐
- 【java+selenium3】元素的扩展操作(二)
1.判断当前元素是否可显示 isDisplay(); //判断元素是否可见 boolean a= driver.findElement(By.id("xxx")).isDispla ...
- aardio 开发桌面应用,这几点必须要掌握!
1. 前言 大家好,我是安果! 上一篇文章写到可以通过 aardio 结合 Python 开发桌面应用,有些小伙伴后台给我留言,说 Aardio 资料太少,希望我能补充一些实用的功能 实用 | 利用 ...
- 自动化SQL注入工具 sqlmap 使用手册
0x00 sqlmap介绍 什么是sqlmap? sqlmap是一个开源的渗透测试工具,它自动化了检测和利用SQL注入缺陷 以及接管数据库服务器的过程.它配备了一个强大的检测引擎 ,以及终极渗透测试仪 ...
- storm启动报错: InvalidTopologyException(msg:Component: [mybolt] subscribes from non-existent stream: [default] of component [es-bolt])
storm每一个bolt在emit之后需要把数据传递到下一个bolt,所以declareOUtputFields 一定要写 默认的情况下不用加streamId,如果加了streamId,后面的bolt ...
- Spark面试题(五)——数据倾斜调优
1.数据倾斜 数据倾斜指的是,并行处理的数据集中,某一部分(如Spark或Kafka的一个Partition)的数据显著多于其它部分,从而使得该部分的处理速度成为整个数据集处理的瓶颈. 数据倾斜俩大直 ...
- Node http
要开发HTTP服务器程序,从头处理TCP连接,解析HTTP是不现实的.这些工作实际上已经由Node.js自带的http模块完成了.应用程序并不直接和HTTP协议打交道,而是操作http模块提供的req ...
- opa gatekeeper笔记:AdmissionReview input.request请求对象结构
官方:https://v1-17.docs.kubernetes.io/zh/docs/reference/access-authn-authz/extensible-admission-contro ...
- printf("%d\n",printf("%d",printf("%d",i)));
#include <stdio.h> int printf( const char *format, ... );首先 得看printf的返回类型是 int 这个函数的返回值是 你输出的位 ...
- [atAGC004F]Namori
考虑树的情况,将其以任意一点为根建树 对于每一个节点,考虑其要与父亲操作几次才能使子树内均为黑色,这可以用形如$(0/1,x)$的二元组来描述,其中0/1即表示其要求操作时父亲是白色/黑色且要操作$x ...
- [loj502]ZQC的截图
给每一个人一个随机数$R_{i}$,将一个消息中所有人的的$R_{i}$在三进制下相加(多次出现需要多个$R_{i}$),最终之和若为0,即判定答案为-1,若为某个$R_{i}$或$R_{i}+R_{ ...