要为我的WebAPI应用程序执行错误记录,我使用的是Log4net。我有两个log4net appender,一个SmtpEmail appender,它使用另一个配备smtp的服务器发送错误通知电子邮件,以及一个指向本地.txt文件的FileAppender。我的问题是我的FileAppender按预期记录了我的log.txt文件中的所有内容,但是SmtpEmail appender无效。没有收到电子邮件,我也没有收到任何错误消息。我注意到的是DOMConfigurator.Configure()返回需要很长时间,并且在返回之后,我经常会留下许多相同的运行进程继续返回。关于什么是错的任何想法,或者我可以做些什么来监控smtp服务器(以下称为“baz.bar.com”)的调用是否正在进行?
以下是.config文件中的相关log4net代码:
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="log-file.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
<to value="foo@bar.com" />
<from value="foo@bar.com" />
<subject value="Write to AX Error" />
<smtpHost value="baz.bar.com" />
<bufferSize value="1" />
<lossy value="false" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="WARN"/>
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%date [%thread] %-5level %logger [%property{NDC}] - %message%newline%newline%newline" />
</layout>
</appender>
<root>
<level value ="DEBUG" />
<appender-ref ref ="FileAppender"/>
<appender-ref ref ="SmtpAppender"/>
</root>
我正在使用Unity。我怀疑这是问题所在,因为我的FileAppender正在运行,但这里的代码无论如何:
private static IUnityContainer BuildUnityContainer()
{
var container = new UnityContainer();
container.RegisterType<ILog>().RegisterInstance(LogManager.GetLogger(typeof(ILog)));
return container;
}
private ILog _log;
public LERService(ILog log)
{
_log = log;
}
以下是我在LERService函数中对日志的调用:
catch(Exception e)
{
_log.Fatal("Cannot submit to client with following exception: " + e.Message, e);
}
答案 0 :(得分:1)
事实证明,我还没有提供一些授权。
此链接提供了一种检查电子邮件是否正在发送的方法。 http://david.gardiner.net.au/2008/11/log4nets-smtpappender-with-multiple.html