logback删除日志文件和文件夹

​​​​​一,事由和源码


       logback版本1.2.11 网上找了很多都是无法删除文件夹的,原先使用的TimeBasedRollingPolicy无法删除日志的文件夹,有很多空的日期文件夹,于是查看TimeBasedRollingPolicy源码发现有校验不删除文件夹,SizeAndTimeBasedRollingPolicy对TimeBasedRollingPolicy相对应的实现左右变动,可以删除文件夹。

1,TimeBasedRollingPolicy


TimeBasedRollingPolicy-start() ->
  this.archiveRemover.cleanAsynchronously ->
TimeBasedArchiveRemover.ArhiveRemoverRunnable..capTotalSize(this.now) ->
  File[] matchingFileArray = this.getFilesInPeriod(date);


2,SizeAndTimeBasedRollingPolicy

SizeAndTimeBasedArchiveRemover.getFilesInPeriod
  File[] matchingFileArray = FileFilterUtil.filesInFolderMatchingStemRegex(parentDir, stemRegex);

二,更改后logback.xml 配置 

     yyyy-MM-dd格式日期目录,不想带-可以写成{yyyyMMdd};

    <pattern>中logId参数需在before通过org.slf4j.MDC的put方法设置UUID。

<configuration><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"><fileNamePattern>logs/%d{yyyy-MM-dd}/info.%i.log</fileNamePattern><maxHistory>7</maxHistory><maxFileSize>10MB</maxFileSize></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %x{logId} %-5level [%thread] %logger{0} - %msg%n</pattern></encoder></appender><root level="INFO"><appender-ref ref="FILE" /></root>
</configuration>

日志目录如下:

logs/2024-05-28/info.0.log

logs/2024-05-29/info.0.log

logs/2024-05-29/info.1.log

logs/2024-05-30/info.1.log

三,SizeAndTimeBasedRollingPolicy参数

SizeAndTimeBasedRollingPolicy是logback日志框架中的一个参数,用于配置滚动日志文件的策略。

属性类型描述
fileString(可选)如果配置了,满足策略时,将新建一个文件,原来的文件被重命名为fileNamePattern定义的规则文件,例如:file=info.log文件大小超过maxFileSize设置20MB,历史文件为info.0.log。【建议省略该配置,防止文件占用时无法重命名】
fileNamePatternString(必须)使用%d{yyyy-MM}格式指定文件名命名规则;如果存在多个%d{},只能有一个生效,其他需要标记为%d{yyyy-MM,aux};%d{}如果省略{},%d等价于%d{yyyy-MM-dd}
maxFileSizeString(可选)滚动时最大文件大小
totalSizeCapint(可选)日志总容量(不是单个日志容量)上限,超限后删除最旧的日志;需要同时设置maxHistory,且优先级比maxHistory低
maxHistoryint(可选)最多保留多少日志文件
cleanHistoryOnStartbooleantrue:表示项目启动时执行删除策略;false:表示在日志滚动中执行删除策略(默认)需要与maxHistory,totalSizeCap配合使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/21525.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker的网络管理

文章目录 一、Docker容器之间的通信1、直接互联&#xff08;默认Bridge网络&#xff09;1.1、Docker安装后默认的网络配置1.2、创建容器后的网络配置1.2.1、首先创建一个容器1.2.2、ip a 列出网卡变化信息1.2.3、查看新建容器后的桥接状态 1.3、容器内安装常见的工具1.4、容器间…

46、Flink 的 异步 I/O 算子详解

异步 I/O 1.需求 在与外部系统交互&#xff08;用数据库中的数据扩充流数据&#xff09;时&#xff0c;需要考虑与外部系统的通信延迟对整个流处理应用的影响。 同步交互&#xff1a;使用 MapFunction访问外部数据库的数据&#xff0c; MapFunction 向数据库发送一个请求然后…

高级 Go 程序设计:使用 net/http/httputil 包构建高效网络服务

高级 Go 程序设计&#xff1a;使用 net/http/httputil 包构建高效网络服务 介绍ReverseProxy 的使用基本概念实现步骤高级配置实际案例 DumpRequest 的使用功能说明代码示例应用场景NewSingleHostReverseProxy 的特性功能概述 详细教程 注意事项使用 NewChunkedWriter 实现高效…

C语言 带头双向循环链表的基本操作

带头双向循环链表的基本操作 结构体定义初始化创建新节点头插头删尾插尾删查找在指定位置之后插入删除指定位置的值打印 结构体定义 typedef int DataType; typedef struct LinkNode {DataType data;struct LinkNode* prev;struct LinkNode* next; }LNode;初始化 有两种初始化…

远控免杀篇

0x00&#xff1a;前言 随着近两年hvv和红蓝对抗以及国家对于网络安全的重视&#xff0c;国内防护水平都蹭蹭上了一个台阶&#xff0c;不管是内部人员的技术水平提高还是防护设备的层层部署&#xff0c;均给了红队人员想要进一步行动设置了障碍。 通过weblogic的cve-2019-2725获…

MLPerf storage基准测试

MLPerf 基准测试 什么是 MLPerf&#xff1f;MLPerf™ 基准测试由来自学术界、研究实验室和行业的 AI 领导者联盟 MLCommons 开发&#xff0c;旨在对硬件、软件和服务的训练和推理性能进行无偏评估。它们都在规定的条件下进行。为了保持在行业趋势的前沿&#xff0c;MLPerf 不断…

C基础-标准库上

下:http://t.csdnimg.cn/LXa0J C 标准库是一组 C 内置函数、常量和头文件&#xff0c;比如 <stdio.h>、<stdlib.h>、<math.h>&#xff0c;等等。 目录 一. assert.h 二. ctype.h 三. errno.h 四. float.h 五.limits.h 六. locale.h 一. assert.h 源码…

166.二叉树:相同的树(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

【机器学习】RLHF:在线方法与离线算法在大模型语言模型校准中的博弈

RLHF&#xff1a;在线方法与离线算法在大型语言模型校准中的博弈 一、引言二、RLHF概述三、在线方法与离线算法的对比四、实验验证与代码实例 一、引言 在人工智能领域&#xff0c;大型语言模型&#xff08;LLM&#xff09;的校准已成为一个备受关注的热点。基于人类反馈的强化…

实现spring配置bean类机制

大家好&#xff0c;这里是教授.F 流程说明&#xff1a; 我们自己实现spring配置bean类的机制&#xff0c;要先了解原本是怎么实现的。 原本的机制就是有一个bean配置文件&#xff0c;还有一个ApplicationContext spring文件。bean类写着要扫描的文件信息&#xff0c;spring文…

【Python学习】数据结构+正则表达式

个人主页&#xff1a;Yang-ai-cao 系列专栏&#xff1a;Python学习 博学而日参省乎己&#xff0c;知明而行无过矣 目录 个人主页&#xff1a;Yang-ai-cao 系列专栏&#xff1a;Python学习 博学而日参省乎己&#xff0c;知明而行无过矣 数据结构 一、列表&#xff08;Lis…

风电机组与风力发电机:它们是同一个东西吗?

风电机组与风力发电机&#xff1a;它们是同一个东西吗&#xff1f; 风电机组和风力发电机是两个常见的术语&#xff0c;尤其是在可再生能源领域。虽然这两个术语有时会被混淆使用&#xff0c;但它们实际上指的是不同的设备和系统。为了弄清楚它们之间的关系&#xff0c;本文将…

最近很火的 ChatTTS项目,有大佬做的 ChatTTS-UI 来啦

地址&#xff1a;https://github.com/jianchang512/ChatTTS-ui 》》》更多开源项目 ChatTTS webUI & API 一个简单的本地网页界面&#xff0c;直接在网页使用 ChatTTS 将文字合成为语音&#xff0c;支持中英文、数字混杂&#xff0c;并提供API接口。 Releases中可下载Wi…

光伏并网逆变器UL 1741:2021标准解析

光伏并网逆变器UL 1741:2021标准解析 不同国家的安规认证可以说是光伏逆变器走向国际市场的一张通行证&#xff0c;由于全球各国家的电网制式及并网政策的不同差异&#xff0c;这对逆变器测试顺利的通过安规测试认证 还是有一定的技术难度&#xff0c;也是中国光伏制造企业迫切…

最全解析:只有了解低代码平台的今生前世,才能明白低代码是什么

低代码&#xff08;Low-Code&#xff09;是一种软件开发方法&#xff0c;它使得开发人员能够通过图形界面、拖放组件和模型驱动的逻辑&#xff0c;快速地构建和部署应用程序&#xff0c;而无需编写大量的代码。尽管低代码这个术语是在2014年才提出&#xff0c;从诞生之初距今不…

【数据结构】复杂度的重要性—–决定程序运行的效率

【数据结构】复杂度的重要性—–决定程序运行的效率 前言 在我们写算法的时候&#xff0c;常常会需要考虑一个问题&#xff1a;这个算法好不好&#xff1f;而这个“好”实际上就取决于是算法的复杂度。 算法复杂度&#xff08;Algorithmic Complexity&#xff09;是指算法在编…

如何在电脑上安装两个flutter版本

Flutter Version Manager (FVM): Flutter的版本管理终极指南 Mac的flutter多版本管理之fvm的安装及使用 一、安装fvm brew tap leoafarias/fvm brew install fvm这个错误可能是由于网络问题或者 Git 配置问题导致的&#xff0c;我开启了梯子就可以了 brew install watchman…

Low Memory Killer in Android

目录 低内存管理&#xff08;Linux vs Android&#xff09; Linux内存回收 shrink_slab原理 shrink_zone原理 oom killer oom killer设计原则 OOM killer具体实现 android的lmk(Low Memory Killer) Android系统特点 oom killer在android中的不足 ​​​​​​​LMK概…

基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用

背景 随着互联网服务的广泛普及与技术应用的深入发展&#xff0c;日志数据作为记录系统活动、用户行为和业务操作的宝贵资源&#xff0c;其价值愈发凸显。然而&#xff0c;当前海量日志数据的产生速度已经远远超出了传统数据分析工具的处理能力&#xff0c;这不仅要求我们具备…

【机器学习】机器学习与AI大数据的融合:开启智能新时代

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 机器学习与AI大数据的融合 &#x1f4d2;1. 引言&#x1f4d5;2. 机器学习与大数据&#x1f3a9;机器学习与大数据的特征&#x1f388;大数据如…