2017-06-30 13 views
2

C#で書かれたコンソールアプリケーションでSerilog.Sinks.Emailを使用しています。 "restrictedToMinimumLevel" = "警告"です。プログラム全体に警告メッセージとエラーメッセージが散在しています。Serilog Emailシンク:アプリケーション終了時のシングルメール

昨日このアプリケーションを実行したとき、実行終了時(コントロールがLog.CloseAndFlush()に到達したとき)に1つの電子メールが届きました。この電子メールには実行中に統合警告とエラーが発生しました。

これは、所望の機能であると私はそれを実装したラッパークラスを記述する必要はありませんでしたことを喜んでいました。私は今日、同じスクリプトを実行したとき

は、私が遭遇したすべてのエラーのために1通の電子メールを受け取りました。

私は、この不安定な動作によって困惑しています。

<add key="serilog:using:Email" value="Serilog.Sinks.Email" /> 
<add key="serilog:write-to:Email.fromEmail" value="<email address>" /> 
<add key="serilog:write-to:Email.toEmail" value="<email address>" /> 
<add key="serilog:write-to:Email.mailServer" value="<mail server>" /> 
<add key="serilog:write-to:Email.mailSubject" value="<application name> [{MachineName}] [User: {UserName}]" /> 
<add key="serilog:write-to:Email.outputTemplate" value="{Timestamp:yyyy-MM-dd HH:mm:ss}:: [{Level:u3}] {Message}{NewLine}" /> 
<add key="serilog:write-to:Email.restrictedToMinimumLevel" value="Warning" /> 

私はスクリプトが一貫で(連結警告やエラーで)多くても1通の電子メールを送信することを保証するために使用する必要があるすべての構成設定があります:私のApp.configファイルからの抽出物は、以下に再現されます任意の実行の終わり?

誰もがこの点で助けることができるマニュアルを私にポイントしてくださいもらえますか?

答えて

0

私はあなたが1つのバッチの限界に達しているか、それを変更したと思います。

あなた App.configから例えば到達できないであろういくつかの制限値に設定してください
/// <summary> 
/// A reasonable default for the number of events posted in 
/// each batch. 
/// </summary> 
public const int DefaultBatchPostingLimit = 100; 

<add key="serilog:write-to:Email.defaultBatchPostingLimit " value="999999" /> 
+0

をやってみたあなたはSerilog.Sinks.Email.EmailSinkから以下のコードで見ることができるようにデフォルトでは100に設定されていますこの。ポストでそれを言及していない私の謝罪。 実際には、それはタイプの各ステートメントのための電子メールメッセージを生成します。 Log.Errorを(「エラーが発生しました」); これまで、スクリプトの最後に1つの統合エラーメッセージが表示されました。 私は大きな値のdefaultBatchPostingLimitを試しましたが、それは役に立ちませんでした。 – Christna

関連する問題