logback删除日志文件和文件夹

2024-06-03 09:36

本文主要是介绍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配合使用

这篇关于logback删除日志文件和文件夹的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1026614

相关文章

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

Java使用SLF4J记录不同级别日志的示例详解

《Java使用SLF4J记录不同级别日志的示例详解》SLF4J是一个简单的日志门面,它允许在运行时选择不同的日志实现,这篇文章主要为大家详细介绍了如何使用SLF4J记录不同级别日志,感兴趣的可以了解下... 目录一、SLF4J简介二、添加依赖三、配置Logback四、记录不同级别的日志五、总结一、SLF4J

python logging模块详解及其日志定时清理方式

《pythonlogging模块详解及其日志定时清理方式》:本文主要介绍pythonlogging模块详解及其日志定时清理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录python logging模块及日志定时清理1.创建logger对象2.logging.basicCo

Qt spdlog日志模块的使用详解

《Qtspdlog日志模块的使用详解》在Qt应用程序开发中,良好的日志系统至关重要,本文将介绍如何使用spdlog1.5.0创建满足以下要求的日志系统,感兴趣的朋友一起看看吧... 目录版本摘要例子logmanager.cpp文件main.cpp文件版本spdlog版本:1.5.0采用1.5.0版本主要

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

macOS无效Launchpad图标轻松删除的4 种实用方法

《macOS无效Launchpad图标轻松删除的4种实用方法》mac中不在appstore上下载的应用经常在删除后它的图标还残留在launchpad中,并且长按图标也不会出现删除符号,下面解决这个问... 在 MACOS 上,Launchpad(也就是「启动台」)是一个便捷的 App 启动工具。但有时候,应

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

golang 日志log与logrus示例详解

《golang日志log与logrus示例详解》log是Go语言标准库中一个简单的日志库,本文给大家介绍golang日志log与logrus示例详解,感兴趣的朋友一起看看吧... 目录一、Go 标准库 log 详解1. 功能特点2. 常用函数3. 示例代码4. 优势和局限二、第三方库 logrus 详解1.

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

一文教你Python引入其他文件夹下的.py文件

《一文教你Python引入其他文件夹下的.py文件》这篇文章主要为大家详细介绍了如何在Python中引入其他文件夹里的.py文件,并探讨几种常见的实现方式,有需要的小伙伴可以根据需求进行选择... 目录1. 使用sys.path动态添加路径2. 使用相对导入(适用于包结构)3. 使用pythonPATH环境