2014-11-16 7 views
14

이전 Asp.net 버전에서는 다른 컨트롤러에서 상속 된 BaseController를 만드는 데 사용되어 간단한 로깅 메서드로 일반 오류를 가로 채고 각 오류를 로깅하여 전달합니다. ExceptionContext filterContext.Asp.net 핵심 오류 관리

Asp.net 5에서 동일한 작업을 수행해야합니까? 나는 기본적으로 생산 응용 프로그램 라인

app.UseErrorHandler("/Home/Error");  

으로, 디버그/라이브 상태를 별도의 경우/else 문이 있음을 Startup.cs에서 참조하십시오. 프로세스에 연결하고 오류를 기록하려면 어떻게해야합니까?

감사합니다.

답변

17

ASP.NET 5의 처리 및 기록 오류에는 몇 가지 요소가 있습니다.

프로덕션 시나리오에서 오류를 처리하고 오류 페이지를 표시하려면 app.UseExceptionHandler() 메서드를 사용해야합니다. ASP.NET GitHub 조직의 진단 레포에는 sample이 포함되어 있습니다. 전체 스택 추적 및 기타 진단 정보를 확인하려는 개발 시간 시나리오의 경우 this sample과 같이 app.UseDeveloperExceptionPage()을 사용하십시오.

응용 프로그램에서 MVC 6을 사용하는 경우 이전 버전의 MVC와 마찬가지로 MVC 관련 오류 처리 방법이 있습니다. MVC 6에서 필터 (또는 필터이기도 한 컨트롤러 자체)는 OnActionExecuted 메서드를 처리/재정의하고 ActionExecutedContext 매개 변수를 검사하여 오류 처리를 시도 할 수 있습니다.

로깅의 경우 등록 된 ILogger에게 많은 정보를보고하는 ASP.NET 5의 새로운 로깅 인프라가 있습니다. Visual Studio 2015의 기본 프로젝트 템플릿은 오류 및 기타 데이터를 콘솔과 VS 디버그 출력 창에 기록하는 일부 로거를 등록합니다. 그러나 IIS 나 IIS Express에서 실행하면 콘솔 창이 없습니다 (아직!). 그러나 명령 행 (dnx web 사용)에서 실행하면 오류가 표시됩니다. 또는 물론 로그 파일이나 데이터베이스에 쓰는 다른 로거를 등록하고 거기에 로그를 볼 수 있습니다.

은 웹 응용 프로그램에서 사용자 지정 ILogger를 등록하려면 :

  1. ILogger 인터페이스를 구현하는 로거를 작성합니다. 이를 수행하는 방법은 DNX implementations을 참조하십시오.
  2. ILoggerFactory 유형의 매개 변수를 앱의 Startup 클래스의 Configure 메소드에 추가하십시오.
  3. Configure 메서드에서 loggerFactory.AddProvider(<some provider>)을 호출하고 로거의 인스턴스를 전달하십시오.
+0

감사합니다. "데이터베이스에 쓰는 다른 로거를 등록하십시오"라는 코드 샘플이 있습니까? 나는 메소드를 호출하거나이 경우 오류 메시지와 세부 정보를 하늘색 테이블 저장소에 기록하는 로거를 등록하려고합니다. –

+1

@Eilon'app.UserErrorHandler()'메커니즘이 404 오류를 처리하는 것을 허용하지 않는 것 같습니다. 어떻게해야하는지에 대한 지침이 있습니까? –

+1

@ggovan 감사합니다. 방금 업데이트 된 정보로 게시물을 업데이트했습니다. – Eilon