1

シンプルなコンソール アプリケーションの一部として Serilog の Email シンクを使用しようとしています。このアプリケーションの有効期間は非常に短く、DB をチェックしてサブスクライバーを新しいデータで更新します。エラーが発生した場合にメールを送信したい。

問題は、アプリの最後に Thread.Sleep を配置しないと、メールが送信されないことです。

電子メール キューを削除して、電子メールを強制的にできるだけ早く送信する方法はありますか?

私のコードは次のとおりです。

    Log.Logger = new LoggerConfiguration()
        .WriteTo.ColoredConsole()
        .WriteTo.EventLog("LOGSOURCE", restrictedToMinimumLevel: LogEventLevel.Warning)
        .WriteTo.Email(connectionInfo: new EmailConnectionInfo()
        {
            EmailSubject = "App error",
            ToEmail = "support@company.com",
            MailServer = "smtp.office365.com",
            NetworkCredentials = new NetworkCredential("sender@company.com", "Password"),
            Port = 587,
            FromEmail = "sender@company.com", 
            EnableSsl = false

        },
        batchPostingLimit: 1,
        restrictedToMinimumLevel: LogEventLevel.Error)
        .CreateLogger();

Log.Error("Error message");

どんな助けでも大歓迎です

4

3 に答える 3

0

シンクによっては (メールについてはよくわかりません)、ロガーを破棄すると正しい効果が得られる可能性があります。

((IDisposable)Log.Logger).Dispose();

それができない場合は、メール シンクで追加の作業が必要になる可能性があります (これには、Serilog トラッカーでチケットを作成することが役立ちます)。

于 2015-05-13T22:20:45.150 に答える