• 异常处理 日志类


    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
        
    {
            
    #region Private Fields
            
    private static  XmlDocument xmlDocument = new XmlDocument();
            
    private static string xmlFileName = "";
            
    const string errorPath = "~/Error.aspx";
            
    #endregion


            
    #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


            
    #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

        }

    }

  • 相关阅读:
    Quote comes from C. Joybell C.
    Operating System: Three Easy Pieces --- LDE (Note)
    Operating System: Three Easy Pieces --- Pthread Locks (Note)
    Operating System: Three Easy Pieces --- Locks (Note)
    Modern Operating System --- Multiple Processor Systems
    Modern Operating System --- Power Management (CPU)
    Modern Operating System --- Power Management (Hard Disk)
    ls指定日期和时间输出格式
    python StringIO
    PING命令入门详解
  • 原文地址:https://www.cnblogs.com/lmcblog/p/2669417.html
Copyright © 2020-2023  润新知