【原创】日志文件清理工具V1.0

8/3/2015来源:C#应用人气:1312

【原创】日志文件清理工具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);//保存