2011-06-27 11 views
0

どうすればこのようになるのですか?異なるページで発生するASP.netのログ記録エラー

protected void Page_Load(object sender, EventArgs e) 
    { 
     try 
     { 
      doSomething(); 
     } 
     catch (Exception ex) 
     { 
      // Here i would like to know that the page is "Problem.aspx" 
      // and that it was caused from the doSomething() function 
     } 
    } 

    private void doSomething() 
    { 
     logToSomething(); 
    } 

答えて

0

私はエラーをログに記録するこの小さなクラスを使用していますが、私はページを取得する方法についての外観と機能(スタックトレース)を持っています。

注:VB.NETから変換され、したがって、テストされていない

+0

Enterprise Library Loggingブロックを設定することができるので、不要なコードがたくさんあります。すべて完了しました。 – Kon

0

例外メッセージを解析することですべてを判断できます。

あなたのメッセージを見て、正規表現を使って必要な情報を抽出します。

1

例外オブジェクトには、エラーが発生した場所を正確に示すstack traceプロパティがあります。

また、Microsoft Enterprise Library(詳しくはログブロック)をチェックしてください。

ログされたエラーはスタックトレースを提供します。特に、エラーがどこで発生したかを正確に知ることができます。

public static class ErrorLog 
{ 
    public static void WriteError(Exception ex) 
    { 
     try { 
      string path = "~/error/logs/" + System.DateTime.Now.ToString("dd-MM-yyyy") + ".txt"; 
      if ((!System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath(path)))) { 
       System.IO.File.Create(System.Web.HttpContext.Current.Server.MapPath(path)).Close(); 
      } 
      using (System.IO.StreamWriter w = System.IO.File.AppendText(System.Web.HttpContext.Current.Server.MapPath(path))) { 
       w.WriteLine(System.Environment.NewLine + "Log Entry : {0}", System.DateTime.Now.ToString(System.Globalization.CultureInfo.InvariantCulture)); 
       var page = VirtualPathUtility.GetFileName(HttpContext.Current.Request.Url.AbsolutePath); 
       w.WriteLine("Error in: " + page); 
       string message = "Message: " + ex.Message; 
       w.WriteLine(message); 
       string stack = "StackTrace: " + ex.StackTrace; 
       w.WriteLine(stack); 
       w.WriteLine("__________________________"); 
       w.Flush(); 
       w.Close(); 
      } 
     } catch (Exception writeLogException) { 
      try { 
       WriteError(writeLogException); 
      } catch (Exception innerEx) { 
       //ignore 
      } 
     } 
    } 
} 

それは私のために完全に十分だ:

+0

「エルマ」は、エラー処理の際に言及されたライブラリの一部です。 – faester

0

はあなたに見てみたいことがあります別のオプションは、ELMAH(ASP.NETのためのエラー・ロギングモジュールとハンドラ)http://code.google.com/p/elmah/です。私は本当にあなたの特定のニーズが何であるかにかかっていると思います。

0

log4netを使用して、エラーメッセージを記録します。ヘルプについては、article 1article 2をご覧ください。あなたが使用してどのような伐採方法

0

、このような何かを行う。(手入力されたがコンパイルされない場合があります)

try 
{ 
    DoignStuff(); 
} 
catch(Exception ex) 
{ 
Trace.WriteLine("Exception in <Page Name> while calling DoingStuff() Ex:"+ ex.ToString()); 
} 

それは、その後(冗長ですが、人生が容易になります)ページ名&方法 始まりますEXを呼び出しスタックとその他の良いものすべてを表示する文字列に変換してログファイルに入れます

注:<Page Name>の代わりにページの名前を入力する必要があります。

Log4NetとElmahは、人生を楽にするのにも最適です。

関連する問題