使用Serilog在.NET Framework中立即发送电子邮件通知

时间:2019-06-25 14:25:19

标签: c# .net serilog

我已经在.NET Framework解决方案中配置了Serilog。我设置了多个接收器,包括通过Serilog.Sinks.Email软件包接收电子邮件的接收器。水槽工作正常。设置完成后,我意识到必须使用Logger.FlushAndClose()来实际发送管道中的电子邮件。如何立即(或在不久之后)发送电子邮件通知/通过Serilog刷新管道?

我正在构建Windows服务,该服务将长时间保持在线状态,因此每次需要发送电子邮件时关闭并重建Serilog日志管道将无法正常工作。

理想情况下,类似Logger.Flush()的东西,但似乎不存在。

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以通过指定批发布限制来临时解决此问题。

通过在初始化电子邮件接收器时将batchPostingLimit参数设置为1,将在每次记录后发送电子邮件。

示例:

logger = logger.WriteTo.Email(
                    fromEmail: "test@gmail.com",
                    toEmail: toEmail,
                    mailServer: "mailserver.com",                    
                    restrictedToMinimumLevel: LogEventLevel.Error,
                    mailSubject: "Log Notification",
                    batchPostingLimit: 1
                );