2009-06-03 6 views
3

.net 어셈블리가 해제 모드로 배포되면 스택 추적을 사용할 수 없습니다. 따라서 예외에서 스택 추적을 가져 와서 프로덕션 환경에 로깅 할 수 없습니다.릴리스 모드에서 예외를 기록하는 방법

프로덕션 코드에서 예외가 발생한 위치를 알고 로그에 기록하려면 weird approach을 사용하십시오. 그러나 처음에는 예외가 발생한 정확한 방법을 기록하는 더 나은 솔루션을 제공하지 못합니다. .

로깅 메커니즘은 버그를 확인하는데도 사용됩니다. 따라서 NullReferenceException 또는 IndexOutOfBoundsException이 발생하면 예외 유형 및 메시지 만 가져 오는 것이 도움이되지 않으므로 예외가 발생한 위치를 정확히 알아야합니다.

어떻게 처리합니까? 예외가 발생했을 때 프로덕션 코드에 어떤 정보를 기록합니까? 해당 정보로 인해 발생한 문제를 어떻게 결정합니까?

+1

릴리스 모드에서 스택 추적을 사용할 수 있습니다 ... 왜 그렇게 생각하지 않습니까? 실행 파일 –

+0

을 가지고 PDB를 배포 한 경우 소스 파일과 행 번호를 얻을 수 있지만 고객에게 pdb 파일을 보내시겠습니까? –

답변

2

ELMAH를 확인해보십시오. 직접 구현하지는 않았지만 일부 주목을 받고있는 것으로 보입니다. 거의 모든 처리되지 않은 예외

  • 로깅 : ELMAH 실행중인 웹 응용 프로그램 삭제 및 구성되면

    http://www.hanselman.com/blog/ELMAHErrorLoggingModulesAndHandlersForASPNETAndMVCToo.aspx

    적절하게, 당신은 당신의 단 한 줄의 코드를 변경하지 않고 다음과 같은 부대 시설을 얻을.

  • 레코딩 된 예외의 전체 로그를 원격으로 보려면 웹 페이지.
  • 기록 된 예외의 전체 세부 정보를 원격으로보기위한 웹 페이지입니다.
  • 많은 경우에있어 customErrors 모드가 꺼져 있어도 ASP.NET이 특정 예외에 대해 생성 한 원래 노란색 황색 화면을 검토 할 수 있습니다.
  • 각 오류가 발생한 시점의 전자 메일 알림입니다.
  • 로그에서 마지막 15 개 오류의 RSS 피드.
  • 메모리에 내장 된 Microsoft SQL Server 및 커뮤니티에서 제공 한 여러 가지 백업용 저장소 구현.
1

릴리스 코드에 대한 스택 추적 기록에는 문제가 없지만 릴리스와 함께 .pdb 파일은 항상 제공됩니다. pdb가 없으면 항상 어셈블리 자체에 포함 된 기호 정보로 제한됩니다. 릴리스 모드의 어셈블리는 그다지 많지 않습니다.

0

모든 릴리스 코드에는 스택 추적이 있습니다. 우리가 누락 된 유일한 것은 .pdb에서 오는 줄 번호입니다. obfuscator를 실행하고 있습니까?

관련 문제