自己做项目学习大虾们写的一些工具类1
2008-03-07 22:04
387 查看
写在这分享一个xml的日志类,它是用来记录winform软件工作时日常信息,软件的系统异常和数据库异常的,
> 这个例子很好用,也让我们掌握了io类的file类使用和xml类的基本方法,我在项目中使用是为了当我的软件出现问题时可要求客户发送email当日的这个日志记录,这样你可能会知道自己的软件错在那行代码上
> 这个例子很好用,也让我们掌握了io类的file类使用和xml类的基本方法,我在项目中使用是为了当我的软件出现问题时可要求客户发送email当日的这个日志记录,这样你可能会知道自己的软件错在那行代码上
using System; using System.Collections.Generic; using System.Text; using System.Xml; using System.Data.SqlClient; using System.Collections; using System.Data; using System.Web; using System.IO; namespace LANServer.Component { public static class LogWriter { #region Private Fields private static XmlDocument xmlDocument = new XmlDocument(); private static string xmlFileName = ""; #endregion #region Private Methods private static bool HasChild(string name, XmlNode node) { XmlNodeList xmlnodelist = node.ChildNodes; foreach (XmlNode enode in xmlnodelist) { if (enode.Name.ToLower() == name.ToLower()) { return true; } } return false; } private static string FormatInt(int num) { string formattedString = ""; if (num <= 9) { formattedString = "0" + num.ToString(); } else { formattedString = num.ToString(); } return formattedString; } private static string GetFileName() { string year = DateTime.Now.Year.ToString(); string month = FormatInt(DateTime.Now.Month); string day = FormatInt(DateTime.Now.Day); string path = "./Logs/"; string file = path + "Log_" + year + month + day + ".xml"; return file; } /**/ /// <summary> /// create log file path /// </summary> private static void CreateLogFile() { string xmlRootElementStr = "<?xml version=/"1.0/" encoding=/"utf-8/"?>/r/n/r/n"; xmlRootElementStr += "<Log>/r/n/r/n"; xmlRootElementStr += " <Server>/r/n/r/n"; xmlRootElementStr += " <Infomations>/r/n/r/n"; xmlRootElementStr += " </Infomations>/r/n/r/n"; xmlRootElementStr += " </Server>/r/n/r/n"; xmlRootElementStr += " <System>/r/n"; xmlRootElementStr += " <Exceptions>/r/n"; xmlRootElementStr += " </Exceptions>/r/n"; xmlRootElementStr += " </System>/r/n/r/n"; xmlRootElementStr += " <Sql>/r/n"; xmlRootElementStr += " <Exceptions>/r/n"; xmlRootElementStr += " </Exceptions>/r/n"; xmlRootElementStr += " </Sql>/r/n/r/n"; xmlRootElementStr += "</Log>/r/n"; xmlFileName = GetFileName(); try { //if file inexistence,create a new log file and load this file if (!System.IO.Directory.Exists("Logs")) { Directory.CreateDirectory("Logs"); // File.Create(xmlFileName); byte[] xmlRootElementByte = System.Text.Encoding.Default.GetBytes(xmlRootElementStr); System.IO.FileStream fileStream = new FileStream(xmlFileName, FileMode.Create, FileAccess.ReadWrite); fileStream.Write(xmlRootElementByte, 0, xmlRootElementByte.Length); fileStream.Close(); xmlDocument.Load(xmlFileName); } else { if (!System.IO.File.Exists(xmlFileName)) { // File.Create(xmlFileName); byte[] xmlRootElementByte = System.Text.Encoding.Default.GetBytes(xmlRootElementStr); System.IO.FileStream fileStream = new System.IO.FileStream(xmlFileName, FileMode.OpenOrCreate, FileAccess.ReadWrite); fileStream.Write(xmlRootElementByte, 0, xmlRootElementByte.Length); fileStream.Close(); xmlDocument.Load(xmlFileName); } else { xmlDocument.Load(xmlFileName); } } } catch (Exception ex) { throw ex; } } #endregion #region Public Methods /**/ /// <summary> /// record a system exception to log /// </summary> /// <param name="ex"></param> public static void AddSystemException(Exception ex) { try { //Get CreateLogFile(); XmlNode xmlNode = xmlDocument.SelectSingleNode("//System//Exceptions"); if (!HasChild("exception", xmlNode)) { XmlElement exceptionNode = xmlDocument.CreateElement("exception"); XmlElement timeNode = xmlDocument.CreateElement("Time"); XmlElement messageNode = xmlDocument.CreateElement("Message"); XmlElement sourceNode = xmlDocument.CreateElement("Source"); XmlElement stacktraceNode = xmlDocument.CreateElement("StackTrace"); DateTime dateTime = DateTime.Now; string messageString = ex.Message; string sourceString = ex.Source; string stacktrace = ex.StackTrace; timeNode.InnerText = dateTime.ToString(); messageNode.InnerText = messageString; sourceNode.InnerText = sourceString; stacktraceNode.InnerText = stacktrace; exceptionNode.AppendChild(timeNode); exceptionNode.AppendChild(messageNode); exceptionNode.AppendChild(sourceNode); exceptionNode.AppendChild(stacktraceNode); xmlNode.AppendChild(exceptionNode); } else { XmlElement exceptionNode = xmlDocument.CreateElement("exception"); XmlElement timeNode = xmlDocument.CreateElement("Time"); XmlElement messageNode = xmlDocument.CreateElement("Message"); XmlElement sourceNode = xmlDocument.CreateElement("Source"); XmlElement stacktraceNode = xmlDocument.CreateElement("StackTrace"); DateTime dateTime = DateTime.Now; string messageString = ex.Message; string sourceString = ex.Source; string stacktrace = ex.StackTrace; timeNode.InnerText = dateTime.ToString(); messageNode.InnerText = messageString; sourceNode.InnerText = sourceString; stacktraceNode.InnerText = stacktrace; exceptionNode.AppendChild(timeNode); exceptionNode.AppendChild(messageNode); exceptionNode.AppendChild(sourceNode); exceptionNode.AppendChild(stacktraceNode); xmlNode.AppendChild(exceptionNode); } xmlDocument.Save(xmlFileName); } catch (Exception e) { throw e; } } // record a sql exception to log public static void AddSqlException(Exception ex) { //Get try { CreateLogFile(); XmlNode xmlNode = xmlDocument.SelectSingleNode("//Sql//Exceptions"); if (!HasChild("exception", xmlNode)) { XmlElement exceptionNode = xmlDocument.CreateElement("exception"); XmlElement timeNode = xmlDocument.CreateElement("Time"); XmlElement messageNode = xmlDocument.CreateElement("Message"); XmlElement sourceNode = xmlDocument.CreateElement("Source"); XmlElement stacktraceNode = xmlDocument.CreateElement("StackTrace"); DateTime dateTime = DateTime.Now; string messageString = ex.Message; string sourceString = ex.Source; string stacktrace = ex.StackTrace; timeNode.InnerText = dateTime.ToString(); messageNode.InnerText = messageString; sourceNode.InnerText = sourceString; stacktraceNode.InnerText = stacktrace; exceptionNode.AppendChild(timeNode); exceptionNode.AppendChild(messageNode); exceptionNode.AppendChild(sourceNode); exceptionNode.AppendChild(stacktraceNode); xmlNode.AppendChild(exceptionNode); } else { XmlElement exceptionNode = xmlDocument.CreateElement("exception"); XmlElement timeNode = xmlDocument.CreateElement("Time"); XmlElement messageNode = xmlDocument.CreateElement("Message"); XmlElement sourceNode = xmlDocument.CreateElement("Source"); XmlElement stacktraceNode = xmlDocument.CreateElement("StackTrace"); DateTime dateTime = DateTime.Now; string messageString = ex.Message; string sourceString = ex.Source; string stacktrace = ex.StackTrace; timeNode.InnerText = dateTime.ToString(); messageNode.InnerText = messageString; sourceNode.InnerText = sourceString; stacktraceNode.InnerText = stacktrace; exceptionNode.AppendChild(timeNode); exceptionNode.AppendChild(messageNode); exceptionNode.AppendChild(sourceNode); exceptionNode.AppendChild(stacktraceNode); xmlNode.AppendChild(exceptionNode); } xmlDocument.Save(xmlFileName); } catch (Exception e) { throw e; } } // record a sql exception to log public static void AddSqlException(Exception ex,string sqltxt) { try { //Get CreateLogFile(); XmlNode xmlNode = xmlDocument.SelectSingleNode("//Sql//Exceptions"); if (!HasChild("exception", xmlNode)) { XmlElement exceptionNode = xmlDocument.CreateElement("exception"); XmlElement timeNode = xmlDocument.CreateElement("Time"); XmlElement messageNode = xmlDocument.CreateElement("Message"); XmlElement sourceNode = xmlDocument.CreateElement("Source"); XmlElement stacktraceNode = xmlDocument.CreateElement("StackTrace"); XmlElement sqltxtNode = xmlDocument.CreateElement("SQL_Text"); DateTime dateTime = DateTime.Now; string messageString = ex.Message; string sourceString = ex.Source; string stacktrace = ex.StackTrace; timeNode.InnerText = dateTime.ToString(); messageNode.InnerText = messageString; sourceNode.InnerText = sourceString; stacktraceNode.InnerText = stacktrace; sqltxtNode.InnerText = sqltxt; exceptionNode.AppendChild(timeNode); exceptionNode.AppendChild(messageNode); exceptionNode.AppendChild(sourceNode); exceptionNode.AppendChild(stacktraceNode); exceptionNode.AppendChild(sqltxtNode); xmlNode.AppendChild(exceptionNode); } else { XmlElement exceptionNode = xmlDocument.CreateElement("exception"); XmlElement timeNode = xmlDocument.CreateElement("Time"); XmlElement messageNode = xmlDocument.CreateElement("Message"); XmlElement sourceNode = xmlDocument.CreateElement("Source"); XmlElement stacktraceNode = xmlDocument.CreateElement("StackTrace"); XmlElement sqltxtNode = xmlDocument.CreateElement("SQL_Text"); DateTime dateTime = DateTime.Now; string messageString = ex.Message; string sourceString = ex.Source; string stacktrace = ex.StackTrace; timeNode.InnerText = dateTime.ToString(); messageNode.InnerText = messageString; sourceNode.InnerText = sourceString; stacktraceNode.InnerText = stacktrace; sqltxtNode.InnerText = sqltxt; exceptionNode.AppendChild(timeNode); exceptionNode.AppendChild(messageNode); exceptionNode.AppendChild(sourceNode); exceptionNode.AppendChild(stacktraceNode); exceptionNode.AppendChild(sqltxtNode); xmlNode.AppendChild(exceptionNode); } xmlDocument.Save(xmlFileName); } catch (Exception e) { throw e; } } public static void AddServerInfo(String msg, String src) { try { //Get CreateLogFile(); XmlNode xmlNode = xmlDocument.SelectSingleNode("//Server//Infomations"); if (!HasChild("Info", xmlNode)) { XmlElement infoNode = xmlDocument.CreateElement("Info"); XmlElement timeNode = xmlDocument.CreateElement("Time"); XmlElement messageNode = xmlDocument.CreateElement("Message"); XmlElement sourceNode = xmlDocument.CreateElement("Source"); DateTime dateTime = DateTime.Now; string messageString = msg; string sourceString = src; timeNode.InnerText = dateTime.ToString(); messageNode.InnerText = messageString; sourceNode.InnerText = sourceString; infoNode.AppendChild(timeNode); infoNode.AppendChild(messageNode); infoNode.AppendChild(sourceNode); xmlNode.AppendChild(infoNode); } else { XmlElement infoNode = xmlDocument.CreateElement("Info"); XmlElement timeNode = xmlDocument.CreateElement("Time"); XmlElement messageNode = xmlDocument.CreateElement("Message"); XmlElement sourceNode = xmlDocument.CreateElement("Source"); DateTime dateTime = DateTime.Now; string messageString = msg; string sourceString = src; timeNode.InnerText = dateTime.ToString(); messageNode.InnerText = messageString; sourceNode.InnerText = sourceString; infoNode.AppendChild(timeNode); infoNode.AppendChild(messageNode); infoNode.AppendChild(sourceNode); xmlNode.AppendChild(infoNode); } xmlDocument.Save(xmlFileName); } catch (Exception e) { throw e; } } #endregion } }
相关文章推荐
- 最近在利用DSP做一个项目,好久没来自己的空间了,后续有时间会发一些自己的学习经验,呵呵!
- wap获取手机号码,今天uc开启云加速,用公司的工具类获取是null,但是另外一个项目可以,应该这个项目的工具旧少了一些代码。。,网上找了 方法自己加可以
- 给自己做的项目添加开机动画,只是一个简单的添加方法,如果系统的方法太麻烦的画,就试试我这个吧,但是如果是想专业一些的话,还是学习系统的吧!!!
- J2EE学习中一些值得研究的开源项目
- 2018年开始写一些博客来记录自己学习过程
- 搬运自己的mysql学习笔记1.工具类的抽取
- [学习笔记] 自己根据一些资料整理的pb常用事件
- J2EE学习中一些值得研究的开源项目
- 自己写的JSON 工具类,封装一些常用的方法
- 关于自己做项目的一些想法
- J2EE学习中一些值得研究的开源项目
- java学习之旅26--api文档_package的概念_生成自己项目的api文档
- J2EE学习中一些值得研究的开源项目
- 最近想把自己的一些项目也开源
- 自己做项目时整理的一些用于过滤的正则表达式
- 分享一些自己写的前端库,并骗骗 star(库都是在实际项目中大量运用过的)
- 【JAVA学习笔记】总结学习J2EE中一些值得研究的开源项目(转)
- 这里将长期更新一些算法小练习,供自己和同行学习和参考
- 平日你的一些不能成为项目自己的小脚本是会选择上传到pypi还是github? - V2EX
- 整理的一些swift开源项目,仅供学习交流!!