2012-12-31 6 views
1

저는 현재 Elmah와 함께 일하고 있으며 정말 좋아합니다. 나는 그것에 대한 몇 가지 질문을했습니다 :Elmah에 대한 몇 가지 질문입니다.

예외와 함께 기록 얻을 예외 로깅에 사용자 정의 데이터를 추가 할 수있는 예외를 기록하는 방법이 있습니까?

내 사이트에서 오류가 발생하면 사용자를 오류 페이지로 리디렉션 할 수 있고 예외로 기록 된 예외에 대한 고유 식별자가 포함되어 있기 때문에 화면에 표시되므로 사용자가보고 할 때 다시 추적 할 수 있습니다. 이것이 가능한가?

어디에도 디스크에 대한 예외 로깅을 설정할 수있는 지침이 있습니까?

답변

0

요청/응답 patern을 사용할 수 있습니다. 사용자가 예외 설정 응답을 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; 
} 

이것은 엘마를 구성하는 방법입니다. http://www.asp.net/web-forms/tutorials/deployment/deploying-web-site-projects/logging-error-details-with-elmah-cs

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> 
+0

web.config 섹션이 작동했습니다. – Rahatur