Подтвердить что ты не робот

Конфигурация Log4Net - LevelMatchFilter

Поскольку в log4net есть следующие уровни

  • ВСЕ
  • DEBUG
  • INFO
  • WARN
  • ОШИБКА
  • FATAL
  • OFF

Может кто-нибудь скажет мне в log4net, как я могу регистрировать только INFO и ERROR или DEBUG и ERROR? Что я имею в виду здесь, это возможность регистрировать два разных уровня, которые не находятся в последовательности?

Я не могу сделать, если я буду использовать следующее, потому что будут также регистрироваться предупреждающие сообщения, которые я не хочу:

<filter type="log4net.Filter.LevelRangeFilter">
    <acceptOnMatch value="true" />
    <levelMin value="INFO" />
    <levelMax value="ERROR" />
</filter>
4b9b3361

Ответ 1

Использовать LevelMatchFilter в сочетании с DenyAllFilter:

<filter type="log4net.Filter.LevelMatchFilter">
  <acceptOnMatch value="true" />
  <levelToMatch  value="INFO" />
</filter>
<filter type="log4net.Filter.LevelMatchFilter">
  <acceptOnMatch value="true" />
  <levelToMatch  value="ERROR" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />

Ответ 2

@BradLaney и др., для которых @iffi fix не работает, убедитесь, что версия по крайней мере 1.2.11. Вот отчет об ошибке: https://issues.apache.org/jira/browse/LOG4NET-137

Также, если вы установили lossy как true, вам понадобится оценщик, для которого LevelMatchFilter не является (это фильтр). Так это работает для меня:

    <filter type="log4net.Filter.LevelMatchFilter">
      <param name="LevelToMatch" value="WARN" />
    </filter>
    <filter type="log4net.Filter.DenyAllFilter" />s a

Не буду добавлять в качестве комментария.

Ответ 3

Пока что никто не сказал, что теги <filter> (как показано в приведенных выше примерах) должны появляться в теге <appender>! Например (это не действительная конфигурация log4net - я только показываю, как тег <filter> является дочерней записью в <appender>:

<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>

Ответ 4

попробовать:

<filter type="log4net.Filter.LevelRangeFilter">
    <levelToMatch value="INFO" />
    <acceptOnMatch value="true" />
</filter>
<filter type="log4net.Filter.LevelRangeFilter">
    <levelToMatch value="ERROR" />
    <acceptOnMatch value="true" />
</filter>