发生错误时发送邮件

时间:2015-12-25 08:46:42

标签: c# .net log4net

我使用log4net记录错误。记录到文件工作,现在我想通过邮件发送错误。但我无法让它发挥作用。这是我的配置文件:

<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
  <to value="test@gmail.com" />
  <from value="test@gmail.com" />
  <subject value="Test - Error" />
  <smtpHost value="smtp.gmail.com" />
  <authentication value="Basic" />
  <port value="587" />
  <username value="MyUsername" />
  <password value="MyPassword" />
  <bufferSize value="1" />
  <lossy value="true" />
  <threshold value="ERROR"/>
  <layout type="log4net.Layout.PatternLayout">
  <conversionPattern value="[%date{dd MMM yyyy HH:mm:ss,fff}] %level %thread %logger - %message%newline" />
  </layout>
</appender>
<root>
    <appender-ref ref="SmtpAppender" />
</root>

我看到有人正在使用<EnableSsl value="true" />,但是当我在appender标签中复制它时,它说它是无效元素。当我通过C#代码发送其他电子邮件时,我将EnableSsl设置为true。

1 个答案:

答案 0 :(得分:2)

调试正在进行的操作的最简单方法是启用log4net内部日志记录:

<appSettings>
    <add key="log4net.Internal.Debug" value="true"/>
</appSettings>

这将向控制台和System.Diagnostics.Trace系统打印您的appender配置的任何潜在问题。我可以看到的问题是你指定了lossy但没有添加评估者:

<lossy value="true" />
<evaluator type="log4net.Core.LevelEvaluator,log4net">
    <threshold value="ERROR" />
</evaluator>

基本上你需要将你当前拥有的<threshold>设置放在评估者部分。

此外,您应该添加<EnableSsl value="true" />开关,因为这是gmail所必需的。

要验证的另一件事是gmail没有阻止您尝试发送电子邮件的地址。登录您的Gmail帐户,查看是否有一些电子邮件表明被阻止的活动。