2009-03-24 2 views
13

Log4Net은 명백하지 않은 이유로 조용히 종료 된 것으로 보입니다. 문제를 해결하는 방법을 잃어 버렸습니다. 내 직감은 특정 appender가 특정 로그 메시지에 실패하고 전체 스택을 종료하는 것 같습니다.Log4net이 로깅을 멈추었을 때 log4net 문제를 해결하는 방법

서비스가 원활하게 종료되지 않고 Log4Net에 예외를 발생시키는 방법이 있습니까 (적어도 디버그 단계에서).

답변

13

난 당신이 log4net 내부 디버그 문을 켭니다 당신의 app.config /의 Web.config의 appSettings는 섹션에 넣을 수있는 설정 값이 있다고 생각 :

<appSettings> 
    <add key="log4net.Internal.Debug" value="true"/> 
</appSettings> 

이 어떤으로 당신에게 통찰력을 줄 것이다는 log4net이 삼키는 오류. 이전 답변을 확장

+5

내부 디버깅을 사용하도록 포인터를 따라 조금 더 파고 나면 System.Diagnostics.Trace에 대한 수신기를 활성화하는 것처럼 보입니다. –

+3

appSettings는 시스템 전에 실행해야합니다.진단 속성. – Dan

22

-

에서, log4net.Internal.Debug 추적에 대한 추적 수신기를 추가 앱 설정이 추가하려면 다음 initializeData은 위에서 속성 값을 교체

<system.diagnostics> 
    <trace autoflush="true"> 
     <listeners> 
     <add 
      name="textWriterTraceListener" 
      type="System.Diagnostics.TextWriterTraceListener" 
      initializeData="c:\temp\log4net.txt" /> 
     </listeners> 
    </trace> 
    </system.diagnostics> 

당신의 원하는 로그 파일 경로. 응용 프로그램 또는 ASP.NET 서버 프로세스에이 파일에 쓸 수있는 권한이 있는지 확인하십시오.

시작할 때 log4net 구성에서 반환 된 메시지를 검사 할 수 있습니다. log4net 버전 1.2.11부터 XmlConfigurator.Configure() 메서드는 구성 프로세스 중 발생한 문제를 나열하는 문자열이 포함 된 ICollection을 반환합니다.

그래서 당신은 이런 식으로 뭔가있어 경우 :

ICollection configMessages = XmlConfigurator.Configure(); 

XmlConfigurator.Configure(); 

변화를하고, 예를 들어, 디버거에 configMessages 검사, 또는 어딘가에을 인쇄

foreach (string msg in configMessages) 
{ 
    Console.WriteLine(msg); 
} 

모두 실패한 경우 log4net 소스를 다운로드하고 솔루션에 프로젝트를 추가 한 다음 log4net.dll 대신 프로젝트를 참조하십시오. 이제 디버거에서 log4net 호출을 사용할 수 있습니다.

0

필자는 파일 로그와 SQL 로그 애펜더가 작동하지 않는 이유를 파악하기가 어려웠습니다. 기본 SQL 테이블을 변경했는데 Int 데이터 유형이 좋지 않았고 Int32가 올바른 값이었습니다. Visual Studio에서 디버깅하고 로깅 방법을 밟을 때까지는이 정보를 찾을 수 없었습니다. 방법의 실행은 내 중단 점에서 일시 중지 된 내가 직접 실행 창에 설치 명령 실행 :

log4net.Config.XmlConfigurator.Configure()

내가 즉각적인 피드백을 볼 수 있었다과의-사실이 있었다 해당 구성 코드가 실행될 때 발생하는 예외입니다. 직접 실행 창에 표시되며 문제를 해결할 수있었습니다.

이 정보가 도움이되기를 바랍니다.

관련 문제