8

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

<root>
<level value="DEBUG" />
<appender-ref ref="ColoredConsoleAppender" />
<appender-ref ref="RollingFileSystemAppender" />
<appender-ref ref="ConsoleAppender" />
</root>
4

2 回答 2

11

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

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

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

<filter type="log4net.Filter.LevelMatchFilter">
  <acceptOnMatch value="false" />
  <levelToMatch  value="INFO" />
</filter>
于 2014-04-07T08:59:56.070 回答
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>
于 2016-06-23T14:18:16.917 回答