【问题标题】:Log4Net configuration - LevelMatchFilterLog4Net 配置 - LevelMatchFilter
【发布时间】:2016-06-23 22:15:35
【问题描述】:

由于log4net中有以下级别

  • 全部
  • 调试
  • 信息
  • 警告
  • 错误
  • 致命的
  • 关闭

谁能告诉我在 log4net 中如何只记录 INFO & ERRORDEBUG & ERROR?我的意思是能够记录两个不按顺序排列的不同级别?

如果我使用以下命令我不能这样做,因为还会记录我不想要的警告消息:

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

【问题讨论】:

标签: filter log4net sequence


【解决方案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" />

【讨论】:

  • 感谢您的示例。仅供参考,trueacceptOnMatch 的默认值,因此在省略这些行的情况下也可以正常工作。
  • @iffi 对于较新版本的 log4net,这根本不适用于 e。
  • 目前还没有人说过 标签(如上所示)必须出现在 标签内!请参阅下面的其他答案。
【解决方案2】:

还没有人说过&lt;filter&gt; 标签(如上例所示)必须出现在&lt;appender&gt; 标签中!例如(这不是一个有效的 log4net 配置——我只是展示了&lt;filter&gt; 标签是&lt;appender&gt; 下的子条目:

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

【讨论】:

    【解决方案3】:

    @BradLaney 等人,@iffi 的修复程序不起作用,请确保版本至少为 1.2.11。这是错误报告: https://issues.apache.org/jira/browse/LOG4NET-137

    此外,如果您将有损设置为 true,您将需要一个 LevelMatchFilter 不是的评估器(它是一个过滤器)。所以这对我有用:

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

    不允许我添加评论。

    【讨论】:

      【解决方案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>
      

      【讨论】:

      • 谢谢迈克。我按你说的试了,没用。然后我沿着这些方向做了更多的研究并找到了解决方案。请参阅答案部分中的解决方案。感谢您的帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      • 2011-04-09
      • 2011-02-17
      • 2010-12-28
      相关资源
      最近更新 更多