Logging 为多个电子邮件目标正确配置NLogs BufferingWrapper?
我想通过电子邮件向不同的邮件目标发送警告和错误。我已经将它们设置为使用BufferingWrapperLogging 为多个电子邮件目标正确配置NLogs BufferingWrapper?,logging,nlog,Logging,Nlog,我想通过电子邮件向不同的邮件目标发送警告和错误。我已经将它们设置为使用BufferingWrapper <targets> <target xsi:type="BufferingWrapper" name="angryMailBuffer" bufferSize="100"> <target name="angryMail" xsi:type="Mail" smtpSer
<targets>
<target xsi:type="BufferingWrapper" name="angryMailBuffer" bufferSize="100">
<target name="angryMail"
xsi:type="Mail"
smtpServer="smptserver"
from="fromemail"
subject="Error"
to="toemail" />
</target>
<target xsi:type="BufferingWrapper" name="warningMailBuffer" bufferSize="500">
<target name="warningMail"
xsi:type="Mail"
smtpServer="smtpserver"
from="fromemail"
subject="Warnings"
to="toemail"/>
</target>
</targets>
<rules>
<logger name="*" level="Error" writeTo="angryMailBuffer"/>
<logger name="*" level="Warn" writeTo="warningMailBuffer"/>
</rules>
这将导致发送一封包含警告的电子邮件。错误不会被发送
如果我修改规则以写入邮件目标而不是缓冲区。我收到3封电子邮件。2个错误和1个警告
为什么NLog的行为不像我预期的那样?问题似乎与中的相同。
这意味着除了在程序退出之前手动调用flush之外,没有什么可以做的,这是必需的,因为使用了AppDomain.ProcessExit事件 这很有趣,我需要研究一下。您使用的是哪个版本的NLog?3.1.0.0一位同事建议我在程序末尾添加LogManager.Flush()。这确实导致所有错误/警告都通过电子邮件发送给目标类型、BufferingWrapper和Mail。这样做只是一种良好的习惯,还是可能会发生其他事情?
private static void Main(string[] args)
{
Log.Error("error");
Log.Error("error");
Log.Warn("warning");
Log.Warn("warning");
}