`
灵雨飘零
  • 浏览: 36400 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
文章分类
社区版块
存档分类
最新评论

日志文件清理工具V1.0

 
阅读更多
最近公司的系统服务器经常出现磁盘空间不足的情况,登陆服务器发现原来是公司的HR系统日志造成的(插个话题:我们公司的HR系统都实施两年多了还没上线,且不说软件功能如何,服务太TMD差劲了,更可气的是软件顾问把系统的组织架构都实施错误了,造成公司的大部分模块使用了一年的数据都得重新再录入。),原来这个系统每天的日志文件都自动保存在服务器C盘,时间久了,造成磁盘空间不足。不指望软件商再改程序,毕竟这些历史日志文件关键时候还是很有用的,但时间太久的肯定留着也没用。还有就是也不能每天都登陆服务器去看磁盘空间情况。干脆自力更生,自己做个小程序实现自动清理服务器日志信息。

日志文件格式是按照时间自动生成的文本文件,这个知道了就好说了。无非就是定时删除几天的前的文本文件,然后用XML保存配置信息。

删除日志代码:

复制代码
/// <summary>
        /// 定期删除日志
       /// </summary>
        /// <param name="strPath">日志路径</param>
       /// <param name="days">天数</param>
        public static void DeleteLog(string strPath,int days)
        {

            if (Directory.Exists(strPath))
            {
                DirectoryInfo dinfor = new DirectoryInfo(strPath);
                FileInfo[] files = dinfor.GetFiles();
                foreach (FileInfo file in files)
                {
                    try
                    {
                        //删除创建日志日期是几天前的日志
                        if (DateTime.Compare(file.CreationTime.AddDays(days), DateTime.Now) < 0)
                        {
                            file.Delete();
                        }
                        //删除最后修改日志日期是几天前的日志
                        if (DateTime.Compare(file.LastWriteTime.AddDays(days), DateTime.Now) < 0)
                        {
                            file.Delete();
                        }
                        //删除日志名称日期是几天前的日志
                        if (DateTime.Compare(Convert.ToDateTime(file.Name.Substring(0, 8)), DateTime.Now.AddDays(-days)) < 0)
                        {
                            file.Delete();
                        }
                    }
                    catch (Exception ex)
                    {
                        continue;
                    }
                }
            }
        }
复制代码

XML文件帮助:

复制代码
#region Xml基本操作

        //实例化Xml文档 
        private static XmlDocument xmlDoc;

        /// <summary>
        /// 加载xml文件
        /// </summary>
        /// <param name="path">XML文件路径</param>
        /// <param name="rootNode">根节点</param>
        public static void LoadXml(string path, string rootNode)
         {
             xmlDoc = new XmlDocument();
             //判断xml文件是否存在
             if (!System.IO.File.Exists(path))
             {
                 //创建xml 声明节点
                 XmlNode xmlnode = xmlDoc.CreateNode(System.Xml.XmlNodeType.XmlDeclaration, "", "");
                 //添加上述创建和 xml声明节点
                 xmlDoc.AppendChild(xmlnode);
                 //创建xml dbGuest 元素(根节点)
                 XmlElement xmlelem = xmlDoc.CreateElement("", rootNode, "");
                 xmlDoc.AppendChild(xmlelem);
                 try
                 {
                     xmlDoc.Save(path);
                 }
                 catch (Exception ex)
                 {
                     throw ex;
                 }
                 xmlDoc.Load(path);
             }
             else
             {
                 //加载xml文件
                 xmlDoc.Load(path);
             }


         }

        /// <summary>
        /// 添加xml子节点
        /// </summary>
        /// <param name="path">xml文件的物理路径</param>
        /// <param name="node_root">根节点名称</param>
        /// <param name="node_name">添加的子节点名称</param>
        /// <param name="node_text">子节点文本</param>
        public static void AddElement(string path, string node_root, string node_name, string node_text)
        {
            LoadXml(path, node_root);

            XmlNodeList nodeList = xmlDoc.SelectSingleNode(node_root).ChildNodes;//获取bookstore节点的所有子节点
            //判断是否有节点,有节点就遍历所有子节点,看看有没有重复节点,没节点就添加一个新节点
            if (nodeList.Count > 0)
            {
                foreach (XmlNode xn in nodeList)//遍历所有子节点 
                {
                    XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型 
                   if (xe.Name != node_name)
                   {
                    XmlNode xmldocSelect = xmlDoc.SelectSingleNode(node_root);   //选中根节点
                    XmlElement son_node = xmlDoc.CreateElement(node_name);    //添加子节点 
                    son_node.InnerText = node_text;    //添加节点文本
                    xmldocSelect.AppendChild(son_node);       //添加子节点
                    xmlDoc.Save(path);          //保存xml文件
                    break;
                   }
                }

            }
            else
            {
                XmlNode xmldocSelect = xmlDoc.SelectSingleNode(node_root);   //选中根节点
                XmlElement son_node = xmlDoc.CreateElement(node_name);    //添加子节点 
                son_node.InnerText = node_text;    //添加节点文本
                xmldocSelect.AppendChild(son_node);       //添加子节点
                xmlDoc.Save(path);          //保存xml文件
            }
        }

        /// <summary>
        /// 添加xml子节点
        /// </summary>
        /// <param name="path">xml文件的物理路径</param>
        /// <param name="node_root">根节点名称</param>
        /// <param name="node_name">添加的子节点名称</param>
        /// <param name="node_text">子节点文本</param>
        /// <param name="att_name">节点属性名称</param>
        /// <param name="att_value">节点属性值</param>
        public static void AddElement(string path, string node_root, string node_name, string node_text, string att_name, string att_value)
        {
            LoadXml(path, node_root);

            XmlNodeList nodeList = xmlDoc.SelectSingleNode(node_root).ChildNodes;//获取bookstore节点的所有子节点
            //判断是否有节点,有节点就遍历所有子节点,看看有没有重复节点,没节点就添加一个新节点
            if (nodeList.Count > 0)
            {
                foreach (XmlNode xn in nodeList)//遍历所有子节点 
                {
                    XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型 
                    if (xe.GetAttribute(att_name) != att_value)
                    {
                        XmlNode xmldocSelect = xmlDoc.SelectSingleNode(node_root);   //选中根节点
                        XmlElement son_node = xmlDoc.CreateElement(node_name);    //添加子节点 
                        son_node.SetAttribute(att_name, att_value);     //设置属性
                        son_node.InnerText = node_text;    //添加节点文本
                        xmldocSelect.AppendChild(son_node);       //添加子节点
                        xmlDoc.Save(path);          //保存xml文件
                        break;
                    }
                }
            }
            else
            {
                XmlNode xmldocSelect = xmlDoc.SelectSingleNode(node_root);   //选中根节点
                XmlElement son_node = xmlDoc.CreateElement(node_name);    //添加子节点 
                son_node.SetAttribute(att_name, att_value);     //设置属性
                son_node.InnerText = node_text;    //添加节点文本
                xmldocSelect.AppendChild(son_node);       //添加子节点
                xmlDoc.Save(path);          //保存xml文件
            }
        }


        /// <summary>
        /// 修改节点的内容
        /// </summary>
        /// <param name="path">xml文件的物理路径</param>
        /// <param name="node_root">根节点名称</param>
        /// <param name="node_name">子节点名称</param>
        /// <param name="new_text">节点的新内容</param>
       
        public static void UpdateElement(string path, string node_root, string node_name, string new_text)
        {
            LoadXml(path, node_root);
            XmlNodeList nodeList = xmlDoc.SelectSingleNode(node_root).ChildNodes;//获取bookstore节点的所有子节点 
            foreach (XmlNode xn in nodeList)//遍历所有子节点 
            {
                XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型 
                if (xe.Name == node_name)
                {
                    xe.InnerText = new_text;    //内容赋值
                    xmlDoc.Save(path);//保存 
                    break;
                }
            }

        }

        /// <summary>
        /// 修改节点的内容
        /// </summary>
        /// <param name="path">xml文件的物理路径</param>
        /// <param name="node_root">根节点名称</param>
        /// <param name="new_text">节点的新内容</param>
        /// <param name="att_name">节点的属性名</param>
        /// <param name="att_value">节点的属性值</param>
        public static void UpdateElement(string path, string node_root, string new_text, string att_name, string att_value)
        {
            LoadXml(path, node_root);
            XmlNodeList nodeList = xmlDoc.SelectSingleNode(node_root).ChildNodes;//获取bookstore节点的所有子节点 
            foreach (XmlNode xn in nodeList)//遍历所有子节点 
            {
                XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型 
                if (xe.GetAttribute(att_name) == att_value)
                {
                    xe.InnerText = new_text;    //内容赋值
                    xmlDoc.Save(path);//保存 
                    break;
                }
            }

        }


        /// <summary>
        /// 删除节点
        /// </summary>
        /// <param name="path">xml文件的物理路径</param>
        /// <param name="node_root">根节点名称</param>
        /// <param name="att_name">节点的属性名</param>
        /// <param name="att_value">节点的属性值</param>
        public static void DeleteNode(string path, string node_root, string att_name, string att_value)
        {

            LoadXml(path, node_root);

            XmlNodeList nodeList = xmlDoc.SelectSingleNode(node_root).ChildNodes;
            XmlNode root = xmlDoc.SelectSingleNode(node_root);

            foreach (XmlNode xn in nodeList)
            {
                XmlElement xe = (XmlElement)xn;

                if (xe.GetAttribute(att_name) == att_value)
                {
                    //xe.RemoveAttribute("name");//删除name属性 
                    xe.RemoveAll();//删除该节点的全部内容 
                    root.RemoveChild(xe);
                    xmlDoc.Save(path);//保存 
                    break;
                }

            }
        }

        /// <summary> 
        /// 读取数据 
        /// </summary> 
        /// <param name="path">路径</param> 
        /// <param name="node">节点</param> 
        /// <param name="attribute">属性名,非空时返回该属性值,否则返回串联值</param> 
        /// <returns>string</returns> 
        /************************************************** 
         * 使用示列: 
         * XmlHelper.Read(path, "//Node", "") 
         * XmlHelper.Read(path, "//Node/Element[@Attribute='Name']", "Attribute") 
         ************************************************/
        public static string Read(string path, string node, string attribute)
        {
            string value = "";
            try
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(path);
                XmlNode xn = doc.SelectSingleNode(node);
                value = (attribute.Equals("") ? xn.InnerText : xn.Attributes[attribute].Value);
            }
            catch { }
            return value;
        }

        /// <summary> 
        /// 插入数据 
        /// </summary> 
        /// <param name="path">路径</param> 
        /// <param name="node">节点</param> 
        /// <param name="element">元素名,非空时插入新元素,否则在该元素中插入属性</param> 
        /// <param name="attribute">属性名,非空时插入该元素属性值,否则插入元素值</param> 
        /// <param name="value"></param> 
        /// <returns></returns> 
        /************************************************** 
         * 使用示列: 
         * XmlHelper.Insert(path, "//Node", "Element", "", "Value") 
         * XmlHelper.Insert(path, "//Node", "Element", "Attribute", "Value") 
         * XmlHelper.Insert(path, "//Node", "", "Attribute", "Value") 
         ************************************************/
        public static void Insert(string path, string node, string element, string attribute, string value)
        {
            try
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(path);
                XmlNode xn = doc.SelectSingleNode(node);
                if (element.Equals(""))
                {
                    if (!attribute.Equals(""))
                    {
                        XmlElement xe = (XmlElement)xn;
                        xe.SetAttribute(attribute, value);
                    }
                }
                else
                {
                    XmlElement xe = doc.CreateElement(element);
                    if (attribute.Equals(""))
                        xe.InnerText = value;
                    else
                        xe.SetAttribute(attribute, value);
                    xn.AppendChild(xe);
                }
                doc.Save(path);
            }
            catch { }
        }

        /// <summary> 
        /// 修改数据 
        /// </summary> 
        /// <param name="path">路径</param> 
        /// <param name="node">节点</param> 
        /// <param name="attribute">属性名,非空时修改该节点属性值,否则修改节点值</param> 
        /// <param name="value"></param> 
        /// <returns></returns> 
        /************************************************** 
         * 使用示列: 
         * XmlHelper.Update(path, "//Node", "", "Value") 
         * XmlHelper.Update(path, "//Node", "Attribute", "Value") 
         ************************************************/
        public static void Update(string path, string node, string attribute, string value)
        {
            try
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(path);
                XmlNode xn = doc.SelectSingleNode(node);
                XmlElement xe = (XmlElement)xn;
                if (attribute.Equals(""))
                    xe.InnerText = value;
                else
                    xe.SetAttribute(attribute, value);
                doc.Save(path);
            }
            catch { }
        }

        /// <summary> 
        /// 删除数据 
        /// </summary> 
        /// <param name="path">路径</param> 
        /// <param name="node">节点</param> 
        /// <param name="attribute">属性名,非空时删除该节点属性值,否则删除节点值</param> 
        /// <param name="value"></param> 
        /// <returns></returns> 
        /************************************************** 
         * 使用示列: 
         * XmlHelper.Delete(path, "//Node", "") 
         * XmlHelper.Delete(path, "//Node", "Attribute") 
         ************************************************/
        public static void Delete(string path, string node, string attribute)
        {
            try
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(path);
                XmlNode xn = doc.SelectSingleNode(node);
                XmlElement xe = (XmlElement)xn;
                if (attribute.Equals(""))
                    xn.ParentNode.RemoveChild(xn);
                else
                    xe.RemoveAttribute(attribute);
                doc.Save(path);
            }
            catch { }
        }

        #endregion
复制代码

其他代码就不贴了,很简单。

系统界面如下:

写了一个晚上,将程序写完了,简单测试了一下,基本功能已经实现了,时间仓促,程序不足之处在所难免,如果大家在使用过程中发现有什么问题,请给我网站或者论坛留言,我好及时修正。

下载地址:

程序下载

源码下载

分享到:
评论

相关推荐

    护卫神·C盘清理工具 v1.0

    "护卫神·C盘清理工具 v1.0" 是一款专注于清理C盘垃圾文件的软件,版本号为1.0,由"护卫神"开发。标题表明了该工具的主要功能,即帮助用户高效清理计算机C盘中的无用文件,提升电脑运行效率。 【描述详解】 描述中...

    VC项目清理助手v1.0

    "VC项目清理助手v1.0"是一款专为C++开发者设计的工具,旨在简化项目维护,提高开发效率。它通过自动化的方式帮助用户整理、清理不必要的文件,释放硬盘空间,同时保持项目的整洁和高效。 1. **理解VC项目结构**: ...

    BCB工程清理助手 v1.0

    【BCB工程清理助手 v1.0】是一款专为BCB(Borland C++ Builder)开发者设计的实用工具,其主要目的是帮助用户更高效地管理和清理BCB工程中的无用文件,提升开发效率和项目整洁度。在BCB开发过程中,可能会积累大量的...

    Win7系统垃圾文件一键清理 v1.0 免费绿色版.rar

    标题中的“Win7系统垃圾文件一键清理 v1.0 免费绿色版”指的是一个针对Windows 7操作系统设计的轻量级系统清理工具。这款工具的主要功能是快速、简便地扫描并清除系统中的无用垃圾文件,从而提高系统的运行效率。在...

    易工具箱V1.0

    其次,"使用文档.txt"是一个文本文件,它很可能包含了关于"易工具箱V1.0"的详细使用指南和帮助信息。用户可以通过阅读这个文档了解如何启动、操作各种内置工具,以及解决可能遇到的问题。在学习和使用新软件时,这样...

    系统垃圾清理器 v1.0.0.0

    【系统垃圾清理器 v1.0.0.0】是一款由博一博3D预测网开发团队精心打造的专业级系统优化工具,旨在帮助用户解决计算机中积累的无用垃圾文件,提升系统的运行效率并释放宝贵的硬盘空间。在这个数字化的时代,电脑的...

    Jm_系统减肥工具v1.0

    《Jm_系统减肥工具v1.0:高效简捷的系统优化利器》 在数字化时代,电脑系统作为我们日常工作的得力助手,其运行效率直接影响到我们的工作效率。然而,随着时间的推移,系统可能会积累大量的冗余文件、无效注册表、...

    Adobe完全清除工具 GetRidOfAdobe-v1.0

    GetRidOfAdobe-v1.0作为一个专业的清理工具,为用户提供了一种简便的方式来处理这个问题,但也需要用户谨慎操作,以免造成不必要的损失。在日常使用中,定期维护和更新软件,可以避免许多类似的问题,保持系统健康...

    MyEclipse一键优化工具V1.0

    8. **日志清理与性能监控**:工具可能会包含清理日志文件的功能,以及提供性能监控工具,帮助用户实时了解MyEclipse的运行状态,以便及时发现问题。 总的来说,MyEclipse一键优化工具V1.0是开发者提升工作效率的...

    NSS服务器安全工具 v1.0.zip

    1. **垃圾清理**:此工具可以帮助管理员清理服务器上的无用文件和日志,以优化磁盘空间,提高系统运行效率。 2. **漏洞修复**:自动检测并修复已知的安全漏洞,防止黑客利用这些漏洞对服务器进行攻击。 3. **系统...

    IIS批量建站工具V1.0.2.39

    【IIS批量建站工具V1.0.2.39】是一款专为Windows操作系统上的Internet Information Services(IIS)设计的高效能管理工具。它能够帮助系统管理员快速、批量地创建、配置和管理多个网站,极大地提高了工作效率,特别...

    win7一键清理系统垃圾

    标题“win7一键清理系统垃圾”所指的是一款专为Windows 7操作系统设计的系统清理工具,它旨在高效地清除系统中的无用文件,释放硬盘空间,提高系统性能。相较于像360电脑管家这样的知名软件,这款工具声称能够提供更...

    系统目录获取工具 v1.0.0.1.zip

    这个v1.0.0.1版本的工具设计简洁,操作直观,旨在为IT专业人士和普通用户提供便利,无需深入理解操作系统底层结构,也能快速获取所需目录信息。 在Windows操作系统中,系统目录扮演着至关重要的角色,它们存储着...

    windows系统日志自动备份脚本

    例如,可能有设置决定是每日、每周还是每月执行一次备份,以及是否在备份后压缩日志文件以节省空间。 在实际应用中,日志备份不仅局限于本地磁盘,还可以备份到网络共享、云存储或其他离线介质。同时,为了确保数据...

    QQ垃圾文件清理工具绿色版

    QQ垃圾文件清理工具是一款专为腾讯QQ设计的优化与清理软件,主要用于清除QQ在使用过程中产生的临时文件、日志、缓存等无用数据,从而释放磁盘空间,提高电脑性能。这款工具的绿色版意味着它无需安装,下载后即可直接...

    懒人工具箱V1.0(懒人专用)

    "懒人工具箱V1.0.exe"这个文件名表明它是该工具箱的可执行文件,用户只需双击即可运行。由于Windows XP的年代较早,因此这款工具箱可能特别注重兼容性和稳定性,以适应该系统的需求。 使用此类工具箱时,用户需要...

    VMware完全清理工具 4款清理工具.zip

    1. **VMware 卸载清理助手V1.0.exe**: 这是一款专门设计用于协助用户彻底卸载并清理 VMware 相关残留的工具。它能够帮助用户找到并删除那些在正常卸载过程中可能遗留的注册表项、配置文件以及临时文件,确保 VMware ...

    qq空间日志管理 v1.0.0.0.zip

    QQ空间日志管理工具是一款专为QQ空间用户设计的日志批量管理软件,版本号为v1.0.0.0。这款工具的主要功能是帮助用户更有效地管理和优化他们的QQ空间日志,提升用户在社交平台上的体验。以下是该软件的核心知识点和...

    [文件数据]Visual Disk Management v1.0_visualdiskmanagement.zip

    《视觉磁盘管理工具Visual Disk Management v1.0详解及应用》 Visual Disk Management v1.0是一款专为用户设计的高效、直观的磁盘管理工具,它以其强大的功能和友好的用户界面,使得磁盘管理和维护变得轻而易举。在...

Global site tag (gtag.js) - Google Analytics