3
  1. 오류 로깅 코드가 실패하면 어떻게합니까?
  2. 어떻게 현재 작동하는지 확인 하시겠습니까?
  3. 작동하지 않는 것을 어떻게 압니까?
  4. 프로덕션 환경에서 작동하는 것을 어떻게 테스트합니까?
  5. 다른 모든 것이 실패 할 경우 예외를 throw해야합니까?

아래 코드는 Microsoft의 엔터프라이즈 라이브러리 로깅 응용 프로그램 블록을 사용합니다. 어떻게하면 더 나은가?오류 로깅이 실패하고 프로덕션 환경에서 작동하는지 테스트하는 방법은 무엇입니까?

using Microsoft.Practices.EnterpriseLibrary.Logging; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     try 
     { 
      // Trying to write some data to the DB 
      ... 
     } 
     catch (Exception ex) 
     { 
      LogHelper.LogException(ex, "Trying to write to the DB"); 
     } 
    } 
} 

public class LogHelper 
{ 
    public static void LogException(Exception ex, string exceptionType) 
    { 
     try 
     { 
      // Simplified version, only logging the message 
      Logger.Write(exceptionType); 
     } 
     catch 
     { 
      // What do you do here??? 
     } 
    } 
} 
+0

체크 아웃 [이 질문에] (http://stackoverflow.com/questions/585539/what-is-the-best-exception-hand-strategy-within-error-logging-classes) – darasd

답변

2

related question의 답변을 참조하십시오. 이 오류가 거의 발생하지 않는 위치의 텍스트 파일에 예외를 기록하십시오. 이 마지막 리조트 로깅이 다른 예외를 throw하여 실패하는 경우 해당 예외를 삼켜 버리거나 앱을 종료하고 오류를 메시지 상자로 표시 할 수 있습니다.

이 특별한 (예외적 인) 경우 예외를 삼키는 것이 앱을 종료하지 않는 유일한 방법입니다.

+0

또한 시도해 볼 수도 있습니다 최후의 수단으로서의 이벤트 로그. – Joe

+0

아니요, 더 쉽게 실패 할 수 있습니다. 기본적으로 이벤트 로그는 7 일이 넘은 evnt를 덮어 쓰도록 구성됩니다. 그들이 가득 차 있다면 그들에게 쓰려고하는 시도는 예외를 던집니다. – Treb

4

내 앱은 일반적으로 두 가지 오류가 있습니다. 첫 번째 방법은 일부 유형의 데이터베이스 로깅을 사용하는 경우에도 로컬 로그 파일에이 파일을 작성하는 것입니다. 그런 다음 오류에 대한 전자 메일을 지원을 위해 설정된 배포 목록으로 보냅니다.

따라서 데이터베이스 로그 쓰기가 실패하면 오류는 여전히 로컬 로그 파일에 있으며 전자 메일을 통해 전송됩니다.

전자 메일에 오류가 발생하면 오류가 계속 기록되므로 나중에 문제를 해결할 수 있습니다.

이상 내결함성을 얻으면 극도로 중요한 응용 프로그램을위한 노력에만 가치가 있습니다.

다른 모든 실패하면

, 당신의 catch 블록에서 '최후의 기록'을 가지고 :

0

로그 파일을 작성하고 절대로 없어지지 않을 공통 주소로 전자 메일을 보냅니다. 둘 중 하나는 글 머리 기호가 아니지만 메일 시스템이 다운되거나 이메일 서버가 변경되면이를 알 수 있다고 생각합니다. 데이터베이스와 플랫 파일 모두에 쓰고 이메일을 보내는 앱이 있습니다. 그래서 3 중 하나가 효과가 있습니다. 내 애플 리케이션 중 하나가 로그에 대한 DB에 쓰고 있었고 그것이 동일한 db에 쓰는 캐치에서 발견되었고 db connection의 일부 변경으로 인해 앱이 실패한 유일한 방법이었다. 그 catch 문을 db 대신 전자 메일로 수정해야합니다. 플랫 파일을 가지고있는 유일한 문제는 파일 시스템 스토리지입니다. 우리는 로그를 위해 플랫 파일을 작성하는 응용 프로그램을 많이 보유하고 있습니다. 따라서 우리는 파일을 계속 백업하고 저장하거나 단순히 삭제할 수 있습니다.