- using System;
- using System.Xml;
- using System.Data.SqlClient;
- using System.Collections;
- using System.Data;
- using System.Web;
- using System.IO;
- using System.Web.UI;
- namespace Auralog.Elisa.Logs
- {
- public static class Log
- {
- Private Fields#region Private Fields
- private static XmlDocument xmlDocument = new XmlDocument();
- private static string xmlFileName = "";
- const string errorPath = "~/Error.aspx";
- #endregion
- Private Methods#region Private Methods
- //if have Exception Redirect error page
- private static void JumpToErrorPage()
- {
- HttpContext.Current.Response.Redirect(errorPath, true);
- }
- 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 = "web/Log/";
- string path = System.Web.HttpContext.Current.Server.MapPath("~/log/");
- 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/"?>";
- xmlRootElementStr += "<LOG>";
- xmlRootElementStr += " <SYSTEM>";
- xmlRootElementStr += " <EXCEPTIONS>";
- xmlRootElementStr += " </EXCEPTIONS>";
- xmlRootElementStr += " </SYSTEM>";
- xmlRootElementStr += " <SQL>";
- xmlRootElementStr += " <EXCEPTIONS>";
- xmlRootElementStr += " </EXCEPTIONS>";
- xmlRootElementStr += " </SQL>";
- xmlRootElementStr += "</LOG>";
- xmlFileName = GetFileName();
- try
- {
- //if file inexistence,create a new log file and load this file
- if (!System.IO.File.Exists(xmlFileName))
- {
- byte[] xmlRootElementByte = System.Text.Encoding.Default.GetBytes(xmlRootElementStr);
- System.IO.FileStream fileStream = new System.IO.FileStream(xmlFileName, FileMode.Create);
- fileStream.Write(xmlRootElementByte, 0, xmlRootElementByte.Length);
- fileStream.Close();
- xmlDocument.Load(xmlFileName);
- }
- else
- {
- xmlDocument.Load(xmlFileName);
- }
- }
- catch (Exception ex)
- {
- throw ex;
- }
- }
- #endregion
- Public Methods#region Public Methods
- /**//// <SUMMARY>
- /// record a system exception to log
- /// </SUMMARY>
- /// <PARAM name="ex"></PARAM>
- public static void AddSystemException(Exception ex)
- {
- //Get
- CreateLogFile();
- XmlNode xmlNode = xmlDocument.SelectSingleNode("//System//exceptions");
- 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);
- JumpToErrorPage();
- }
- // record a sql exception to log
- public static void AddSqlException(Exception ex)
- {
- //Get
- CreateLogFile();
- XmlNode xmlNode = xmlDocument.SelectSingleNode("//Sql//exceptions");
- 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);
- JumpToErrorPage();
- }
- #endregion
- }
- }<PRE></PRE>
c# 日志异常类
最新推荐文章于 2024-07-10 16:30:57 发布