ASP.NETレコードエラーログ

5581 ワード

本稿では,我々のウェブサイトにおける誤りと異常を簡単な処理で記録する.このように、プログラムエラーが発生するたびに、ユーザーを別のページにナビゲートし、エラーがサーバ上のテキストファイルに記録され、エラーが発生するたびにログ形式で毎日記録されます.
まず、サーバ上の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
Log Entry :
"); w.WriteLine("{0}", DateTime.Now.ToString(CultureInfo.InvariantCulture)); w.WriteLine(errorMessage); w.WriteLine("________________________________________________________"); w.Flush(); w.Close(); } } catch (Exception ex) { WriteError(ex.Message); } }

 
サイトで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ファイルは、ユーザがエラーが発生したときに表示されるエラーページに使用されます.
終わりだ!