在 .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
);
我已经在我的 .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
);