0

log4net.Appender.SmtpAppender在应用程序中使用。这就是它的配置方式。

  <appender name="FatalSmtpAppender" type="log4net.Appender.SmtpAppender">
  <to value="...." />
  <from value="......" />
  <subject value="URGENT: Error occured" />
  <smtpHost value="....." />
  <bufferSize value="1" />
  <lossy value="false" />
  <filter type="log4net.Filter.LevelRangeFilter">
    <levelMin value="FATAL" />
    <levelMax value="FATAL" />
  </filter>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline" />
  </layout>
</appender>

到目前为止,它按预期工作。

现在业务需求发生了变化。如果出现错误,系统将尝试修复 3 次。在所有尝试都失败后,它应该发送电子邮件。

3 次尝试修复错误部分已编码。但是log4net在第一次发生错误时发送电子邮件。我不知道如何保留电子邮件,直到 3 次尝试。

我希望它不会令人困惑。谢谢!!!

4

1 回答 1

0

在 3 次尝试后发送错误的逻辑最好在业务逻辑中解决,而不是在 smtp appender 中。

int failurecount = 0;
while (true){   
...
  try{
  ... 
  }catch(...){
      failurecount++;
      if (failurecount == 3){
          _logger.Error(...);
           break;
      } // else log warning
  }
}

Appenders 不知道错误是如何相互关联的,你必须记住 log4net 是一个尽力而为和故障停止的日志记录系统。如果 log4net 无法登录,您将不会收到通知。有关详细信息,请参阅https://logging.apache.org/log4net/release/faq.html

于 2015-05-16T18:21:12.193 回答