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

Using Serilog to send email notification immediately in .NET Framework

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

我正在构建一个 windows 服务,它将长时间保持在线状态,因此每次我需要发送电子邮件时关闭并重建 Serilog 日志记录管道是行不通的。

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

谢谢。

您可以band-aid通过指定批量发布限制来解决这个问题。

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

示例:

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