Log4Net配置 - LevelMatchFilter

iff*_*ffi 19 log4net filter sequence

由于log4net中有以下级别

  • 所有
  • DEBUG
  • 信息
  • 警告
  • 错误
  • 致命
  • 关闭

任何人都可以在log4net告诉我如何只记录INFO&ERRORDEBUG&ERROR?我在这里的意思是能够记录两个不按顺序排列的不同级别吗?

如果我使用以下内容,则无法执行,因为我也不会记录警告消息:

<filter type="log4net.Filter.LevelRangeFilter">
    <acceptOnMatch value="true" />
    <levelMin value="INFO" />
    <levelMax value="ERROR" />
</filter>
Run Code Online (Sandbox Code Playgroud)

iff*_*ffi 30

将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" />
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的例子.只是FYI,`true`是`acceptOnMatch`的默认值,所以这对于那些排除的线也同样有用. (2认同)

Jaz*_*mov 5

还没有人说过<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>
Run Code Online (Sandbox Code Playgroud)