0

我创建了一个自定义附加程序来使用 EF 将错误记录到数据库中。我还有一个 RollingFileAppender,我想记录所有内容。这是我的配置部分:

  <log4net>
    <appender name="RollingFileAppender"
          type="log4net.Appender.RollingFileAppender" >
      <param name="File" value="c:\logs\log-file.txt" />
      <param name="MaximumFileSize" value="1MB" />
      <layout type="log4net.Layout.PatternLayout" value="%date [%thread] %-5level %logger [%ndc] - %message%newline"/>
    </appender>
    <appender name="LogToDBAppender" type="Common.Appender.LogToDBAppender">
      <filter type="log4net.Filter.LevelMatchFilter">
        <levelToMatch value="ERROR"/>
      </filter>
    </appender>
    <root level="ALL">      
      <appender-ref ref="RollingFileAppender" />
      <appender-ref ref="LogToDBAppender" />
    </root>    
  </log4net>

这里的问题是以下代码:

logger.Info("Entering LoadAllUsers");

调用 LogToDBAppender 类,当然它会失败,因为它需要一个异常参数。

任何帮助表示赞赏。

谢谢

4

1 回答 1

0

您需要在DenyAllFilter之后添加LevelMatchFilter

<appender name="LogToDBAppender" type="Common.Appender.LogToDBAppender">
  <filter type="log4net.Filter.LevelMatchFilter">
    <levelToMatch value="ERROR"/>
  </filter>
  <filter type="log4net.Filter.DenyAllFilter" />
</appender>

第一个过滤器接受所有 ERROR 消息,第二个过滤器拒绝所有其他消息。如果没有第二个过滤器,其他消息也会被接受。

于 2013-01-26T16:59:53.000 回答