수색…


소개

Log4net은 장애 조치 로깅 시스템입니다. Fail stop은 내부 예외에 대한 로깅을 중지하고 의도적으로 프로그램 흐름과 상호 작용하지 않는다는 것을 의미합니다. 이 사실을 알면 log4net 문제를 쉽게 해결할 수 있다고 설명합니다. 로깅이 실패하면 프로그램은이를 알지 못합니다. 다음에 대한 많은 질문을 봅니다 : 왜 내 log4net 로깅이 작동하지 않습니까? 이 문서에서는 기본적인 문제 해결과 가장 일반적인 솔루션에 대해 설명합니다.

대부분의 경우 첫 번째 단계는 log4net에 대한 내부 디버깅을 활성화하는 것입니다.

내부 디버깅 사용

log4net에서 내부 디버깅을 활성화하는 두 가지 방법이 있습니다.

  • 응용 프로그램의 구성 파일에 log4net.Internal.Debug 옵션을 지정하십시오.
  • 프로그래밍 방식으로 log4net의 내부 디버그 사용

응용 프로그램의 구성 파일에 log4net.Internal.Debug 옵션을 지정하십시오.

이것은 내부 디버깅을 활성화하고 log4net.Internal.Debug 키를 응용 프로그램의 app.config 파일에 추가하는 기본 방법입니다.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="log4net.Internal.Debug" value="true"/>
    </appSettings>
</configuration>

디버그 로깅은 응용 프로그램이 시작될 때 즉시 시작됩니다.

프로그래밍 방식으로 log4net의 내부 디버그 사용

두 번째 방법은 프로그래밍 방식으로이 작업을 수행하는 것입니다. log4net.Util.LogLog.InternalDebugging 속성을 true로 설정하십시오.

log4net.Util.LogLog.InternalDebugging = true;

내부 디버그 로그 출력

내부 디버깅 메시지는 콘솔과 System.Diagnostics.Trace에 기록됩니다. 콘솔 출력을해야 할 때 System.Console을 리디렉션 할 수 있습니다. 또는 추적 메시지를 파일로 재지 정할 수 있습니다.

<configuration>
...

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

...
</configuration>

버퍼 된 어 펜더

일부 log4net appender는 버퍼 된 appenders입니다. 이러한 appenders는 일정량의 메시지가 기록 될 때만 기록됩니다. 일부 샘플은 SmtpAppender, RemotingAppender 또는 AdoNetAppender입니다. 이 애펜더에는 BufferSize 설정이 있습니다.

<bufferSize value="100" />

즉, 버퍼에 100 개의 메시지가있을 때 로거가 기록됩니다. appender를 테스트하려면 bufferSize를 1로 설정할 수 있습니다.

버퍼에서 오류가 발생하면 평가자를 사용할 수 있습니다.

<evaluator type="log4net.Core.LevelEvaluator">
     <threshold value="ERROR"/>
</evaluator>

평가자의 조건이 충족되면 버퍼가 플러시됩니다.

Configure ()가 호출되지 않거나 여러 번 호출되었습니다.

로깅이 표시되지 않으면 응용 프로그램에서 Configure() 가 호출되었는지 확인할 수 있습니다. 가장 쉬운 방법은 그것을 어셈블리에 특성으로 추가하는 것입니다.

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

그런 다음 구성에 log4net.Config.XmlConfigurator.Configure() 를 추가 할 필요가 없습니다. 또는 시작 방법 중 하나에 log4net.Config.XmlConfigurator.Configure() 를 추가 할 수 있습니다. 구성을 한 번만 호출해야합니다.

파일 appender는 쓰지 않습니다.

파일 첨부자가있는 경우 사용자가 파일을 작성하고 업데이트 할 수있는 위치에 쓰고 있는지 확인하십시오. 그렇지 않으면 로깅이 실패합니다. 내부 디버깅이 가능할 때이를 확인할 수 있습니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow