2017-02-24 6 views
0

특정 텍스트를 기록 할 때 예외를 throw하는 가짜 appender를 구현하려고했습니다. 분명히 log4net은 매우 어렵습니다. AppenderSkeleton에서 파생 된 Appender를 구현하려고했습니다. ErrorHandler를 예외 재실행 대상으로 변경했습니다. 그러나 log4net이 모든 예외를 포착하는 것을 막을 수있는 방법은 없습니다.log4net에서 모든 예외를 포착하지 못하게하는 방법은 무엇입니까?

log4net을 중지시키는 방법이 있습니까? 가급적 프로그래밍 방식으로.

감사합니다.

+0

그냥 명확히하기 위해 로그 오류 수준 이상으로 로그하고 하위 수준 예외를 기록하지 말고 싶습니까? – Jacobr365

+0

나는 이것을하는 방법이 없다고 생각합니다. Log4net은 로깅 중 오류가 프로그램에 영향을 미치지 않는지 확인합니다. 답장을 보내 주셔서 감사합니다. https://logging.apache.org/log4net/release/faq.html#reliability – sgmoore

답변

1

수 없습니다. Log4net은 설계 상 예외를 발생시키지 않습니다. 설계 상 log4net은 실행중인 프로그램과 상호 작용하지 않습니다.

log4net은 신뢰할 수있는 로깅 시스템입니까? Log4net은 신뢰할 수 없습니다. 그것은 은 최선 노력과 실패 - 그만 로깅 시스템입니다. fail-stop은 이며, 실행시 log4net이 예기치 않은 예외를 throw하지 않아 잠재적으로 응용 프로그램이 중단되는 것을 의미합니다. 어떠한 이유로 든 log4net이 ArgumentException 및 ArgumentNullException을 제외하고 catch되지 않은 예외를 throw하면 [email protected] 메일 링리스트로 전자 메일을 보내주십시오. 잡히지 않은 예외 은 즉각적인주의가 필요한 심각한 버그로 처리됩니다. 또한 log4net은 지정된 출력 스트림이 열리지 않았거나 쓸 수 없거나 이 가득 차게되면 System.Console.Out 또는 System.Console.Error 으로 되돌아 가지 않습니다. 이렇게하면 로깅이 실패하기 때문에 에 의해 작업중인 프로그램이 손상되어 사용자의 터미널이 손상되는 것을 방지 할 수 있습니다. 그러나 log4net 은 단일 메시지를 System.Console.Error에 출력하고 System.Diagnostics.Trace는 로깅을 수행 할 수 없음을 나타냅니다.

+0

적어도 나는 그것에 대한 해결책이 없다는 것을 알고있다. –