Antwort

8

In log4X gibt es Filter, die auf Appender angewendet werden können, um Nachrichten zu filtern; hier ist ein list of the filters

  • log4net.Filter.LevelMatchFilter Filter Ereignisse protokollieren, die eine bestimmte Protokollebene entsprechen; Alternativ kann dies so konfiguriert werden, dass Ereignisse gefiltert werden, die NICHT mit einer bestimmten Protokollierungsstufe übereinstimmen.
  • log4net.Filter.LevelRangeFilter Ähnlich wie LevelMatchFilter, mit der Ausnahme, dass statt einer einzelnen Protokollstufe nach einem inklusiven Bereich zusammenhängender Ebenen gefiltert wird.
  • log4net.Filter.LoggerMatchFilter Filtert Protokollereignisse basierend auf dem Namen des Loggerobjekts, von dem sie ausgegeben werden.
  • log4net.Filter.StringMatchFilter Filtert Protokollereignisse basierend auf einer Übereinstimmung von Zeichenfolge oder regulärem Ausdruck mit der Protokollnachricht.
  • log4net.Filter.PropertyFilter Filtert Protokollereignisse basierend auf einem Wert oder einer Übereinstimmung eines regulären Ausdrucks mit einer bestimmten Kontexteigenschaft.
  • log4net.Filter.DenyAllFilter Löscht alle Protokollierungsereignisse für den Appender.

In Ihrem Fall müssten Sie Ihre drei Appen filtern, um die INFO Ebene auszuschließen: a LevelMatchFilter Verweigerung INFO Ebene Protokolle funktionieren würde:

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

Das ist genau das, was ich gesucht habe! Getestet und es funktioniert. Ich kann Ihnen nicht genug danken. –

2

Beachten Sie, dass die <filter>-Tags (wie gezeigt in die obigen Beispiele) müssen innerhalb eines <appender> Tags erscheinen! Zum Beispiel (ist dies keine gültige log4net-Konfiguration - ich bin nur das zeigt, wie die <filter> Tag unter <appender> ein Kind Eintrag:

<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

Upvoted für die Angabe der richtigen Position des Tags sowie der DenyAllFilter - was erforderlich ist, um alle anderen Ebenen zu blockieren. – Bertie

Verwandte Themen