2009-10-19 8 views
4

우리는 1 차 MVC 응용 프로그램을 가지고 있으며 특별한 고려 사항을 방황하고 있습니다. 일반적인 웹 폼 애플리케이션에서 우리는 try catch 블록을 사용하여 페이지 뒤의 코드에 이벤트를 래핑합니다. 하지만 mvc는 도우미, 컨트롤러, 경로 등에서 명확하지 않은 것으로 보입니다. 로깅이 있는지 확인해야합니다.Asp.NET MVC 응용 프로그램에 log4net을 설정하는 방법

답변

2

일반적으로 컨트롤러 작업에 로깅을 적용합니다. HandleError 속성에서 파생되어 오류 로깅을 추가 할 수있을뿐 아니라 특정 유형의 로깅을 자동화하는 사용자 정의 액션/결과 필터를 만들 수도 있습니다. 이러한 필터를 사용하면 기본 컨트롤러에이 필터를 적용하고 모든 작업에 대해 기본적인 사용 현황 로깅/계측 기능을 사용할 수 있습니다.

컨트롤러 팩토리, 액션 호출자 또는 모델 바인더를 사용하여 프레임 워크를 사용자 정의하는 경우 여기에 로깅을 적용 할 수도 있습니다. 물론 실제 모델 (도메인 개체, 외부 서비스, 지속성 및 데이터베이스, 보안 등)에 로깅을 적용하는 방법에 대해서는 말할 것도 없습니다. 당신의 Global.asax.cs 파일에서

+1

우리는 일반적으로 (WebForm의 응용 프로그램에서) 또한 Global.asax에의함으로써 Application_Error 이벤트 로깅 않습니다. 이것은 MVC에도 적용 되는가, 아니면 모든 처리되지 않은 예외를 처리하기에 더 적합한 "적절한"장소인가? –

+1

Application_Error는 전체적인 예외 로깅에 완벽하게 적합합니다. 사실 HandleError를 서브 클래 싱하는 것이 더 좋을 것입니다. 왜냐하면, 웹 요청 (예 : Application_Start의 코드)을 직접 처리하지 않는 스레드에서 실행되는 코드에서도 예외를 기록하기 때문입니다. –

0

:

protected void Application_Error(object sender, EventArgs e) 
{ 
    _logger.Error("Unhandled exception", Server.GetLastError()); 
} 
관련 문제