0

EF を使用してエラーを DB に記録するカスタム アペンダーを作成しました。また、すべてをログに記録したい 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 メッセージを受け入れ、2 番目のフィルターは他のすべてのメッセージを拒否します。2 番目のフィルターがないと、他のメッセージも受け入れられます。

于 2013-01-26T16:59:53.000 に答える