문제

ASP.NET 응용 프로그램에서 오류를 기록하는 가장 좋은 방법을 찾고 있습니다.내 신청서에 오류가 발생할 경우 예외 및 현재 요청에 대한 자세한 정보가 포함된 이메일을 받을 수 있기를 원합니다.

우리 회사에서는 Global.asax Application_Error의 모든 것을 포착하는 자체 ErrorMailer를 사용했습니다."괜찮아"였지만 그다지 유연하지도 구성 가능하지도 않았습니다.

최근에 NLog로 전환했습니다.훨씬 더 구성 가능하며 오류에 대한 다양한 대상을 정의하고, 필터링하고, 버퍼링할 수 있습니다(아직 시도되지 않음).매우 좋은 개선입니다.

하지만 최근에 .Net 프레임워크에 이 목적을 위한 전체 네임스페이스가 있다는 사실을 발견했습니다. 시스템.웹.관리 그리고 그것은에서 구성될 수 있습니다 건강 모니터링 web.config 섹션.

.Net 상태 모니터링을 사용해 본 적이 있습니까?오류 로깅에 대한 솔루션은 무엇입니까?

도움이 되었습니까?

해결책

나는 사용한다 엘마.그것은 정말 좋은 기능을 가지고 있으며 여기에는 코드프로젝트 그것에 관한 기사.StackOverflow 팀도 elmah를 사용하는 것 같아요!

다른 팁

나는 사용해왔다 로그4넷, 치명적인 오류에 대한 세부 정보를 이메일로 보내도록 구성되었습니다.또한 모든 것을 로그 파일에 기록하도록 설정되어 있어 문제를 디버깅할 때 매우 유용합니다.또 다른 이점은 표준 기능이 원하는 대로 작동하지 않는 경우 필요에 따라 로깅 정보를 처리할 수 있는 사용자 정의 어펜더를 작성하는 것이 매우 쉽다는 것입니다.

그렇긴 하지만, 나는 이것을 표준 log4net 이메일(페이지, 세션 변수, 쿠키, http 서버 변수 등)에 포함된 것보다 조금 더 많은 정보가 포함된 HTML 이메일을 보내는 사용자 정의 오류 핸들러와 함께 사용하고 있습니다.

이 두 가지 모두 Application_OnError 이벤트에 연결되어 예외가 log4net에 치명적인 예외로 기록되고(이로 인해 지정된 이메일 주소로 이메일이 전송됨) 사용자 정의 오류 핸들러를 사용하여 처리됩니다.

처음 듣는 이야기 엘마 Coding Horror 블로그 항목에서 책임감 있는 충돌, 유망해 보이지만 아직 어떤 프로젝트도 구현하지 않았습니다.

저는 Enterprise Library의 Logging 개체를 사용해 왔습니다.이를 통해 다양한 유형의 로깅(플랫 파일, 이메일 및/또는 데이터베이스)을 가질 수 있습니다.이는 꽤 사용자 정의가 가능하며 로깅 구성을 위해 web.config를 업데이트하기 위한 꽤 좋은 인터페이스를 가지고 있습니다.일반적으로 Global.asax의 On Error에서 로깅을 호출합니다.

MSDN 링크는 다음과 같습니다.

나는 log4net을 사용하며 어디에서나 사용합니다. 예상하다 예외는 적절한 수준에 기록됩니다.저는 예외가 실제로 좋은 사용자 경험을 허용하지 않고 현재 상태에서 제공할 수 있는 정보가 적기 때문에 예외를 다시 발생시키지 않는 경향이 있습니다.

또한 예상하지 못한 예외를 포착하도록 Application_Error를 구성하고 오류는 log4net을 통해 치명적인 우선순위로 기록됩니다(음, 404는 심각도가 높지 않기 때문에 감지되어 정보로 기록됩니다).

우리 팀에서는 log4net 아파치에서.꽤 가볍고 설정도 쉽습니다.무엇보다도 web.config 파일에서 완전히 구성할 수 있으므로 코드 설정에 후크가 있으면 web.config 파일을 변경하는 것만으로 로깅 수행 방식을 완전히 변경할 수 있습니다.

log4net은 데이터베이스, 이메일, 텍스트 파일, Windows 이벤트 로그 등 다양한 위치에 대한 로깅을 지원합니다.우리 팀에서는 자세한 오류 정보를 데이터베이스에 보내고 코드의 어느 부분에서 오류가 발생했는지 확인할 수 있는 충분한 정보가 포함된 이메일을 전체 팀에 보내도록 구성했습니다.그러면 우리는 해당 코드를 담당하는 사람이 누구인지 알 수 있으며, 그들은 데이터베이스로 이동하여 더 자세한 정보를 얻을 수 있습니다.

저는 최근 모든 데스크톱 앱에 사용하는 NLog를 사용하여 asp.net 웹 서비스를 구축했습니다.Visual Studio에서 디버깅할 때는 로깅이 제대로 작동하지만 IIS로 전환하자마자 로그 파일이 생성되지 않습니다.아직 이유를 파악하지 못했지만 솔루션을 찾아야 한다는 사실 때문에 asp.net 요구 사항에 맞는 다른 것을 시도해보고 싶습니다!

우리는 EnterpriseLibrary.ExceptionHandling.Logging을 사용합니다.저는 로깅을 완전히 제어할 뿐만 아니라 구성 내에서 Throw/NoThrow 결정도 제어할 수 있기 때문에 log4net보다 조금 더 좋아합니다.

우리는 우리가 작성한 사용자 정의 자체 로깅 유틸리티를 사용합니다.필요한 모든 곳에서 직접 로깅을 구현해야 합니다.그러나 이를 통해 단순한 예외보다 더 많은 것을 캡처할 수도 있습니다.

예를 들어 우리 코드는 다음과 같습니다:

Try
  Dim p as New Person()
  p.Name = "Joe"
  p.Age = 30
Catch ex as Exception
  Log.LogException(ex,"Err creating person and assigning name/age")
  Throw ex
End Try

이렇게 하면 로거가 필요한 모든 정보를 SQL 데이터베이스에 기록합니다.특정 오류나 자주 발생하는 오류를 찾기 위해 DB 수준에서 이메일 알림을 설정했습니다.이는 오류가 어디서 발생하는지 정확히 식별하는 데 도움이 됩니다.

이것은 정확히 당신이 찾고 있는 것이 아닐 수도 있습니다.Global.asax를 사용하는 것과 유사한 또 다른 접근 방식은 다음과 같은 코드 삽입 기술입니다. AOP ~와 함께 포스트샤프.이를 통해 모든 메소드의 시작과 끝 또는 모든 예외에 사용자 정의 코드를 삽입할 수 있습니다.이는 흥미로운 접근 방식이지만 성능 오버헤드가 너무 클 수 있다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top