Как управлять триггером электронной почты log4net.Appender.SmtpAppender

Я использую 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 попыток.

Я надеюсь, что это не смущает. Спасибо!!!

1 ответ

Логика отправки ошибки после 3 попыток лучше всего решается в бизнес-логике, а не в SMTP-приложении.

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

Участники не знают, как ошибки связаны друг с другом, и вы должны помнить, что log4net - это система регистрации с максимальным усилием и аварийным остановом. Вы не будете проинформированы, если log4net не сможет войти. См. https://logging.apache.org/log4net/release/faq.html для получения дополнительной информации.

Другие вопросы по тегам