Log4Net从日志中过滤出INFO,仅显示DEBUG&ERROR

Sam*_*ack 7 log4net log4net-configuration log4net-filter log4net-appender

有没有办法从日志中过滤出INFO,只显示DEBUG&ERROR,使用web.config中的配置?

<root>
<level value="DEBUG" />
<appender-ref ref="ColoredConsoleAppender" />
<appender-ref ref="RollingFileSystemAppender" />
<appender-ref ref="ConsoleAppender" />
</root>
Run Code Online (Sandbox Code Playgroud)

sam*_*amy 10

在log4X中,有一些过滤器可以应用于appender以过滤消息; 这是一个过滤器列表

  • log4net.Filter.LevelMatchFilter 过滤与特定日志记录级别匹配的日志事件; 或者,可以将其配置为过滤与特定日志记录级别不匹配的事件.
  • log4net.Filter.LevelRangeFilter 与LevelMatchFilter类似,不同之处在于它不会过滤单个日志级别,而是在包含范围的连续级别上进行过滤.
  • log4net.Filter.LoggerMatchFilter 根据发出它们的记录器对象的名称过滤日志事件.
  • log4net.Filter.StringMatchFilter 根据日志消息的字符串或正则表达式匹配过滤日志事件.
  • log4net.Filter.PropertyFilter 根据特定上下文属性的值或正则表达式匹配过滤日志事件.
  • log4net.Filter.DenyAllFilter 有效地删除appender的所有日志记录事件.

在您的情况下,您需要过滤三个appender以排除INFO级别:LevelMatchFilter拒绝INFO级别日志将起作用:

<filter type="log4net.Filter.LevelMatchFilter">
  <acceptOnMatch value="false" />
  <levelToMatch  value="INFO" />
</filter>
Run Code Online (Sandbox Code Playgroud)


Jaz*_*mov 6

请注意,<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)

  • 因指出标签以及 DenyAllFilter 的正确位置而投赞成票 - 这是阻止所有其他级别所必需的。 (2认同)