2017-05-15 13 views
1

log4net v2.0.8 (NuGet을 통해 설치됨)을 사용하는 C# Framework 4.5.2 프로젝트가 있고 적어도 10 가지가 다르지만 비슷한 질문을 읽었습니다. 그들 중 내 문제가 해결되었습니다. 물론 로그 애펜더에 성공적으로 쓸 수 있지만 필터링/임계 값은 작동하지 않습니다. 하나의 로거 (ROOT 또는 명명 된 인스턴스 사용 중)를 사용하고 특정 로더 (예 : 파일, db, smtp 등)를 사용하기 위해 실제 로깅을 지시하는 다른 임계 값/필터를 설정했습니다. 이렇게하면 특정 레벨의 필터 값이 단일 appender에 의해서만 처리 될 수 있습니다. 테스트를 위해 파일 첨부자가 Info (및 그 이상) 임계 값을 기록하는 동안 Warning 및 위 임계 값을 사용하여 ADO appender를 사용하려고합니다. 그래서, 내가 Info Log 메소드를 테스트 할 때, db로 끝나지 않아야하지만, 항상 그렇습니다. 그래서 어떻게 든 구성이 잘못되었습니다. 일부 코드가있어 여기에또 다른 log4net 구성 문제. 서로 다른 임계 값을 가진 루트 로거 (또는 단일, 이름이 지정된 로거)

:

구성 여기를 통해 검토 한 결과 단지 몇이며, 그들은 해결책을 나에게 통찰력을 제공하지만,하지 :

<!--<root>  
</root>--> 
<logger name="Logger"> 
    <appender-ref ref="LogFileAppender"/>   
    <appender-ref ref="AdoNetAppender"/>   
</logger> 

<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="c:\temp\logging\derp.log" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="5" /> 
    <maximumFileSize value="10MB" /> 
    <staticLogFileName value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%thread] %level %property{ProjectName} (%logger) - %message%newline" /> 
    </layout> 
    <!--<threshold value="Info" />--> 
</appender> 

나는 g a logger 섹션의 appender-ref 내의 Threshold. appender 내에서 직접 가져 왔습니다. levelMatch/levelMax (아래 참조)와 함께 LevelMatchfilter를 사용했습니다. LevelRangeFilter, 아무 것도. 아무것도 올바르게 작동하지 않습니다.

<filter type="log4net.Filter.LevelMatchFilter"> 
    <levelMin value="Warning" /> 
    <levelMax value="Fatal" /> 
</filter> 
<threshold value="Warning" /> 

저는 Evaluator를 통합하려고 시도했지만 작동하지 않습니다.

대부분의 온라인 예제는 5 년 이상되어 종종 v1.2에 대해 이야기합니다. 이것의 최신 버전에 뭔가가 있습니까, 아니면 그냥 다른 것을 놓치고 있습니까? 아니면 잘못된 순서로 그것을하고 있습니까? 어떤 도움을 주셔서 감사합니다. 고맙습니다!

답변

1

두 가지가 있습니다. 첫째, 경고가 아니라 경고입니다.

<filter type="log4net.Filter.LevelMatchFilter"> 
    <levelMin value="WARN" /> 
    <levelMax value="Fatal" /> 
</filter> 

둘째, 이와 같이 루트를 추가하십시오.

<root> 
    <level value="ALL" /> 
    <appender-ref ref="LogFileAppender" /> 
    <appender-ref ref="AdoNetAppender" /> 
</root>