自己做项目学习大虾们写的一些工具类1

本文介绍了一个用于Winform应用的日志记录类,该类利用XML文件记录软件运行信息、系统异常及数据库异常。通过该方法,开发者能从客户端收集错误日志以定位问题。

 写在这分享一个xml的日志类,它是用来记录winform软件工作时日常信息,软件的系统异常和数据库异常的,

> 这个例子很好用,也让我们掌握了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

	}



}

源码地址: https://pan.quark.cn/s/d1f41682e390 miyoubiAuto 米游社每日米游币自动化Python脚本(务必使用Python3) 8更新:更换cookie的获取地址 注意:禁止在B站、贴吧、或各大论坛大肆传播! 作者已退游,项目不维护了。 如果有能力的可以pr修复。 小引一波 推荐关注几个非常可爱有趣的女孩! 欢迎B站搜索: @嘉然今天吃什么 @向晚大魔王 @乃琳Queen @贝拉kira 第三方库 食用方法 下载源码 在Global.py中设置米游社Cookie 运行myb.py 本地第一次运行时会自动生产一个文件储存cookie,请勿删除 当前仅支持单个账号! 获取Cookie方法 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 按刷新页面,按下图复制 Cookie: How to get mys cookie 当触发时,可尝试按关闭,然后再次刷新页面,最后复制 Cookie。 也可以使用另一种方法: 复制代码 浏览器无痕模式打开 http://user.mihoyo.com/ ,登录账号 按,打开,找到并点击 控制台粘贴代码并运行,获得类似的输出信息 部分即为所需复制的 Cookie,点击确定复制 部署方法--腾讯云函数版(推荐! ) 下载项目源码和压缩包 进入项目文件夹打开命令行执行以下命令 xxxxxxx为通过上面方式或取得米游社cookie 一定要用双引号包裹!! 例如: png 复制返回内容(包括括号) 例如: QQ截图20210505031552.png 登录腾讯云函数官网 选择函数服务-新建-自定义创建 函数名称随意-地区随意-运行环境Python3....
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值