我想将警告和错误通过电子邮件发送给不同的邮件目标。我已将它们设置为使用BufferingWrapper。
<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>
和一个非常简单的控制台应用程序:
private static void Main(string[] args)
{
Log.Error("error");
Log.Error("error");
Log.Warn("warning");
Log.Warn("warning");
}
这会导致发送包含警告的单个电子邮件。错误不会发送。
如果我修改规则以写入Mail目标而不是缓冲区。我收到3封电子邮件。 2个错误和1个警告。
为什么NLog没有像我期望的那样表现?
答案 0 :(得分:0)
问题似乎与https://stackoverflow.com/a/15775837中的问题相同。 这意味着除了在程序退出之前手动调用flush之外没有太多工作要做,这是必要的,因为使用了AppDomain.ProcessExit事件。