5

로그에서 INFO를 필터링 할 수있는 방법이 있습니까? web.config의 구성을 사용하여 DEBUG & ERROR 만 표시합니까?Log4Net 로그에서 INFO를 필터링하고 디버그 및 오류 만 표시

<root> 
<level value="DEBUG" /> 
<appender-ref ref="ColoredConsoleAppender" /> 
<appender-ref ref="RollingFileSystemAppender" /> 
<appender-ref ref="ConsoleAppender" /> 
</root> 
+0

가능한 중복. com/questions/7721843/log4net-configuration-levelmatchfilter) – samy

답변

8

log4X에는 메시지를 필터링하기 위해 appender에 적용 할 수있는 필터가 있습니다. 여기 필터가 특정 로깅 수준을 일치하는 이벤트를 로그온합니다 list of the filters

  • log4net.Filter.LevelMatchFilter이다; 또는 특정 로깅 수준과 일치하지 않는 이벤트를 필터링하도록 구성 할 수 있습니다.
  • log4net.Filter.LevelRangeFilter 단일 로그 수준을 필터링하는 대신이 필터는 인접한 수준의 포괄적 인 범위를 필터링한다는 점을 제외하면 LevelMatchFilter와 유사합니다.
  • log4net.Filter.LoggerMatchFilter 필터는 로그가 생성 된 로거 개체의 이름을 기반으로 이벤트를 기록합니다.
  • log4net.Filter.StringMatchFilter 필터는 로그 메시지에 대한 문자열 또는 정규 표현식 일치를 기반으로 이벤트를 기록합니다.
  • log4net.Filter.PropertyFilter 필터는 특정 컨텍스트 속성에 대한 값 또는 정규 표현식 일치를 기반으로 이벤트를 기록합니다.
  • log4net.Filter.DenyAllFilter appender에 대한 모든 로깅 이벤트를 효과적으로 삭제합니다. 귀하의 경우에는

당신이 INFO 수준을 배제하기 위해 사용자의 세 가지 펜더를 필터링해야 다음 <filter> 태그 (에 도시 된 바와 같이

<filter type="log4net.Filter.LevelMatchFilter"> 
    <acceptOnMatch value="false" /> 
    <levelToMatch value="INFO" /> 
</filter> 
+0

정확히 내가 뭘 찾고 있었는지 !! 테스트를 거쳤으며 작동합니다. 충분히 감사 할 수는 없습니다 .. –

2

참고 : LevelMatchFilter가 INFO 수준의 로그를 거부 일하는 것이 위의 예)는 <appender> 태그 내에 있어야합니다. 예를 들어 (이 유효한 log4net의 구성이 아닙니다 - 미안 만 <filter> 태그 <appender>에서 하위 항목입니다 방법을 보여주는 : - : // 유래 (HTTP [LevelMatchFilter Log4Net 구성]의

<configuration> 
    <configSections> 
    <section ...="" /> 
    </configSections> 
    <startup> 
    <supportedRuntime ...="" /> 
    </startup> 
    <log4net> 
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date{dd MMM yyyy HH:mm:ss} {%thread} %level - %message%newline%exception"/> 
     </layout> 
     <filter type="log4net.Filter.LevelMatchFilter"> 
     <acceptOnMatch value="true" /> 
     <levelToMatch value="INFO" /> 
     </filter> 
     <filter type="log4net.Filter.DenyAllFilter" /> 
    </appender> 
    <root> 
     <appender-ref ...="" /> 
    </root> 
    <logger name="Log4NetTest.OtherClass"> 
     <level value="DEBUG"/> 
     <appender-ref ref="ConsoleAppender"/> 
    </logger> 
    </log4net> 
</configuration> 
+1

태그의 정확한 위치와 DenyAllFilter - 다른 모든 수준을 차단하는 데 필요합니다. – Bertie