zoukankan      html  css  js  c++  java
  • 日志清理与文件批量删除

    工具下载地址:小工具

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

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

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

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

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

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

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

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

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

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

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

    程序界面如下:

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

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

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

  • 相关阅读:
    hibernate中对象的3种状态:瞬时态(Transient)、 持久态(Persistent)、脱管态(Detached)
    object references an unsaved transient instance
    前端JS利用canvas的drawImage()对图片进行压缩
    js获取上传图片的尺寸大小
    多线程经典问题1——主线程子线程交替问题
    hdu 1689 Alien’s Necklace (bfs层次图剪枝)
    新炬数据库大师—暑期公益体验课
    怎样高速地安装Ubuntu SDK
    Spring boot 整合spring Data JPA+Spring Security+Thymeleaf框架(上)
    iOS 合并.a文件,制作通用静态库
  • 原文地址:https://www.cnblogs.com/huangyoulong/p/12624244.html
Copyright © 2011-2022 走看看