我在应用程序中使用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次尝试之前保留电子邮件。
我希望它不会令人困惑。感谢!!!
答案 0 :(得分:0)
在3次尝试后发送错误的逻辑最好在业务逻辑中解决,而不是在smtp appender中。
int failurecount = 0;
while (true){
...
try{
...
}catch(...){
failurecount++;
if (failurecount == 3){
_logger.Error(...);
break;
} // else log warning
}
}
Appender不知道错误如何相互关联,你必须记住log4net是一个尽力而为的故障停止日志记录系统。如果log4net无法登录,则不会通知您。有关详细信息,请参阅https://logging.apache.org/log4net/release/faq.html。