1

私は現在エルマと仕事をしていて、とても気に入っています。しかし、私はそれについていくつか質問があります:

例外をログに記録するときに、例外とともにログに記録される例外ログにカスタムデータを追加できる方法はありますか?

私のサイトでエラーが発生した場合、ユーザーをエラーページにリダイレクトし、例外とともにログに記録されるだけでなく、画面にも表示される例外の一意の識別子を含めて、追跡できるようにしたいと思います。ユーザーが報告したとき。これは可能ですか?

ディスクへの例外のロギングを設定できることを教えてくれる指示はどこかにありますか?

4

2 に答える 2

2

任意の例外のデータ コレクションに追加できます。これは、try catch ブロック、Global.asax の Application_Error ハンドラー、または登録済みの HandleErrorAttribute で行うことができます。

exception.Data.Add("key", "additional info");

Elmah の設定を使用してファイルにログを記録できます。この場所へのユーザー権限が設定されていることを確認してください。

<elmah>
<security allowRemoteAccess="yes" />
<errorLog type="Elmah.XmlFileErrorLog, Elmah" logPath="~/ErrorLogs" />
</elmah>
于 2012-12-31T12:03:38.563 に答える
0

Request/Response パターンを使用できます。ユーザーが例外セット応答 false を取得した場合、Elmah でエラーをログに記録し、一意のエラー ID を含むエラー メッセージをエンド ユーザーに返します。以下にコード例を示します。

public class Response
{
    public string Message { get; set; }
    public bool Success { get; set; }
}

public class ErrorLog
{
    public static string GenerateErrorRefMessageAndLog(Exception exception)
    {
        string uniqueId = Guid.NewGuid().ToString();
        Exception newEx = new Exception(uniqueId, exception);
        Elmah.ErrorSignal.FromCurrentContext().Raise(newEx);
        return String.Format("If you wish to contact us please quote reference '{0}'", uniqueId); 
    }
}

public class YourClass
{
    var response = new Response();

    try
    {
      //Bussines logic here
      response.Success = true;
    }
    catch (Exception ex)
    {
        // Shield Exceptions
        response.Message = ErrorLog.GenerateErrorRefMessageAndLog(ex);
        response.Success = false;
    }            
    return response;
}

Elmah の設定方法の URL です。 http://www.asp.net/web-forms/tutorials/deployment/deploying-web-site-projects/logging-error-details-with-elmah-cs

于 2012-12-31T11:54:37.000 に答える