Использование Serilog для немедленной отправки уведомлений по электронной почте в .NET Framework - PullRequest
1 голос
/ 25 июня 2019

Я настроил Serilog в своем решении .NET Framework. Я настроил несколько приемников, включая приемник для электронной почты через пакет Serilog.Sinks.Email. Раковина работает правильно. После настройки я понял, что должен использовать Logger.FlushAndClose() для фактической отправки писем в конвейере. Как я могу отправить уведомление по электронной почте / очистить конвейер через Serilog сразу (или вскоре после этого), когда он зарегистрирован?

Я создаю службу Windows, которая будет оставаться в сети в течение продолжительных периодов времени, поэтому отключение и перестройка конвейера журналов Serilog каждый раз, когда мне нужно отправить электронное письмо, не будет работать.

В идеале, что-то вроде Logger.Flush(), но этого, похоже, не существует.

Спасибо.

1 Ответ

0 голосов
/ 25 июня 2019

Вы можете исправить это с помощью бинта, указав предел отправки партии.

Если для параметра batchPostingLimit установить значение 1 при инициализации приемника электронной почты, электронные письма будут отправляться после каждой регистрации.

Пример:

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