Es ist cool, wie log4net Filter alle kombiniert werden können, um die gewünschte Ausgabe zu erzielen. Alle Protokolleinträge haben standardmäßig eine "neutrale" Filterdisposition und log4net protokolliert standardmäßig alle Einträge, die neutral sind.
Was die LevelRangeFilter
wird, ist tun, wenn der Pegel des Eintrags in diesem Bereich liegt, wird es die Filter Disposition auf „Accept“ (oder seine Disposition zu lassen, wie es, wenn die acceptOnMatch
war Parameter false
gesetzt ist), und es markiert alle Einträge außerhalb des Bereichs mit der Einstellung "Verweigern".
Die LevelMatchFilter
wird die Disposition für die im levelToMatch
Parameter angegebenen Filter auf „Akzeptieren“, es sei denn, die acceptToMatch
-false
gesetzt ist, dann wird es gesetzt Einträge passend zu „Deny“, wird nicht angepasste Einträge zu überlassen, was sie waren Vor.
Also, was können Sie tun, ist eine Kombination der beiden Filter verwenden zu bekommen, was Sie wollen:
<appender name="FilteredConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<filter type="log4net.Filter.LevelRangeFilter">
<levelMax value="FATAL" />
<levelMin value="ERROR" />
</filter>
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="WARN" />
<acceptOnMatch value="false" />
</filter>
</appender>
Dies ermöglicht es Ihnen leicht hin- und herzuschalten die warnen Ebene ein und aus. Alle Einträge außerhalb des Bereichs sind bereits alle, die als „nicht erlaubt“ und die LevelMatchFilter
wird hier markieren Einträge Warn-Ebene als auch auf Verweigern so die DenyAllFilter
ist nicht erforderlich. Hey
! Danke für die schnelle Antwort. Kann es programmatisch gemacht werden? Ich habe nur eine Möglichkeit gefunden, die Log-Ebene des Loggers (root) zu ändern, nicht jeden Appender. –
Entschuldigung, ich habe deinen Kommentar verpasst. sollte auch programmatisch möglich sein. Hier können Sie sehen, wie alle Appen zu bekommen: http://stackoverflow.com/questions/3016108/change-log4net-conversion-pattern-or-layout-at-runtime/3031867#3031867 –