日志清理与文件批量删除

作为一个开发人员,一个一线的码农,我们在写程序的时候往往会给自己的程序添加很多的日志输出,这是一个好习惯,但是很多程序员却没有在程序里面增加日志定期清除的好习惯,从事IT领域十多年,接触到的软件也是五花八门,这个通病一直是运维人员的苦,一般来说客户会有运维系统,那么会对服务器磁盘空间设置预警,一旦低于多少空间就会提醒维护人员去删除日志。

网上有一些批处理命令,可以删除这些日志,然后添加到计划任务里面定时执行,这是一个办法,我这边就不做叙述,感兴趣的小伙伴可以自己百度。

我这里介绍的是我遇到的一种比较极端的情况,一个服务,正常运行了一年,没有任何问题,突然有一天不行了,检查后发现是服务写日志的磁盘满了。然后就准备去删除文件,结果文件夹乱七八糟的,很多各种类型的日志文件,也不知道删除哪些好,最要命的是,右键属性看了一下,这些小的日志文件居然达到了百万个,我嘞个乖乖,这是要命了,直接用Delete键删除,导致界面卡死,并且是无法恢复响应的那种。

尝试了很多办法,不是卡死就是误删。

码农的思维方式就是电脑上的操作都是可以通过程序的方式去实现,于是乎开干。

一般获取磁盘文件的方法是:

Directory.GetFiles("文件夹路径", "文件类型", SearchOption.AllDirectories);

上面这个是常用方法,但是本场景下是不适用的,一旦采用上面的方法,直接和系统按Delete键删除一样,程序卡死。换种写法

DirectoryInfo dir = new DirectoryInfo("文件夹路径");
FileInfo[] files = dir.GetFiles();
DirectoryInfo[] dirs = dir.GetDirectories();

采用上面这种方式,结合递归或者循坏,题外话一般来说所有的递归都是可以用循环的写法去实现(感兴趣的小伙伴可以自己百度,我这里就不解释了)

通过层层递归,获取所有文件信息以及文件夹信息,这样就可以删除这些文件。

程序界面如下:

功能介绍:设置删除文件夹,然后分析文件夹,分析文件夹可以了解到文件夹的文件分布情况

通过分析文件夹中各种文件类型的大小,以及个数来判断,哪些是需要删除的文件

其他功能就不介绍了,这里重点介绍一下邮件通知,因为需要删除的文件非常非常多,删除耗时可能需要几个小时甚至是几天,因此增加了一个邮件通知是否已经全部删除。

猜你喜欢

转载自www.cnblogs.com/huangyoulong/p/12624244.html