Как управлять триггером электронной почты 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 для получения дополнительной информации.