当前位置:首页 > asp.net如何记录网站中的错误和异常

asp.net如何记录网站中的错误和异常

点击次数:2453  更新日期:2013-05-18

在本文中,我们将通过一个简单的处理来记录在我们的网站中的错误和异常。我们这样操作,每当遇到程序错误时,将使用者导航到一个单独的页面,同时错误将被记录到服务器上的一个文本文件,每当错误发生时,我们将以日志的形式每天记录。

首先,我先写一个静态方法用于将错误信息记录到文本文件,这里是将错误信息记录到服务器上的Error文件夹下,代码如下:

   using System.Globalization;

   /// summary
   /// 用于将错误信息输出到txt文件
   /// /summary
   /// param name=errorMessage错误详细信息/param
   public static void WriteError(string errorMessage)
   {
       try
       {
           string path = ~/Error/ + DateTime.Today.ToString(yyMMdd) + .txt;
           if (!File.Exists(System.Web.HttpContext.Current.Server.MapPath(path)))
           {
               File.Create(System.Web.HttpContext.Current.Server.MapPath(path)).Close();
           }
           using (StreamWriter w = File.AppendText(System.Web.HttpContext.Current.Server.MapPath(path)))
           {
               w.WriteLine(\\r\\nLog Entry : );
               w.WriteLine({0}, DateTime.Now.ToString(CultureInfo.InvariantCulture));
               w.WriteLine(errorMessage);
               w.WriteLine(________________________________________________________);
               w.Flush();
               w.Close();
           }
       }
       catch (Exception ex)
       {
           WriteError(ex.Message);
       }
   }

在网站Global.asax文件的Application_Error中加入如下代码

   void Application_Error(object sender, EventArgs e)
   {
       // 在出现未处理的错误时运行的代码
       Exception objErr = Server.GetLastError().GetBaseException();
       //记录出现错误的IP地址
       string strIP = Request.UserHostAddress;
      string err = Ip【 + strIP + 】 + Environment.NewLine + Error in【 + Request.Url.ToString() +
                         】 + Environment.NewLine + Error Message【 + objErr.Message.ToString() + 】;
       //记录错误
       FN.WriteError(err);
   }

配置Web.Config文件

   system.web
   customErrors mode=RemoteOnly defaultRedirect=GenericErrorPage.htm
    !--可以指定其他错误页面...--
   /customErrors
   /system.web

建立一个GenericErrorPage.htm文件,用于使用者出现错误时呈现的错误页面。