我使用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。
答案 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帐户,查看是否有一些电子邮件表明被阻止的活动。