Это круто, как все фильтры log4net могут быть объединены для достижения желаемого результата. Все записи журнала по умолчанию имеют расположение фильтра «Нейтральный», а log4net по умолчанию регистрирует все записи, которые являются нейтральными.
Что сделает LevelRangeFilter
, если уровень записи находится в диапазоне, он установит расположение фильтра на «Принять» (или оставит свое расположение таким, как было, если для параметра acceptOnMatch
установлено значение false
) и помечает все записи, не входящие в диапазон, диспозицией «Запретить».
LevelMatchFilter
установит расположение для фильтра, указанного в параметре levelToMatch
, на «Принять», если acceptToMatch
не установлен на false
, затем для соответствующих записей будет «Запретить», несопоставленные записи останется тем, кем они были раньше.
Итак, вы можете использовать комбинацию двух фильтров, чтобы получить то, что вы хотите:
<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>
Это позволит вам легко включать и выключать уровень предупреждения. Все записи за пределами диапазона уже все помечены как «Запретить», и LevelMatchFilter
здесь помечает записи уровня WARN как «Запретить», поэтому DenyAllFilter
не требуется.