2017-06-30 25 views
2

我在用C#編寫一個控制檯應用程序使用Serilog.Sinks.Email結束單一的郵件。 這是「restrictedToMinimumLevel」 =「警告」,我有整個程序灑警告和錯誤消息。Serilog電子郵件水槽:在應用

當我昨天運行這個應用程序時,在運行結束時(當控制到達Log.CloseAndFlush()時收到一封電子郵件),並且此電子郵件具有運行期間生成的整合警告和錯誤。

這是所需的功能,我很高興我不需要編寫一個可以實現它的包裝類。

當我今天運行相同的腳本時,我收到了一封遇到的每個錯誤的電子郵件。

我這個奇怪的行爲感到困惑。從我的App.config文件摘錄轉載如下:

<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" /> 

有,我應該使用以便確保腳本始終發送至多一個電子郵件(與合併的警告和錯誤)的任何配置設置任何運行結束?

任何人都可以請指點我可以幫助這方面的文檔?

回答

0

我認爲您已達到一個批次的限制或已更改它。默認情況下,它被設置爲100,你可以在下面的代碼中看到,從Serilog.Sinks.Email.EmailSink

/// <summary> 
/// A reasonable default for the number of events posted in 
/// each batch. 
/// </summary> 
public const int DefaultBatchPostingLimit = 100; 

設置該從你的App.config一些限制,不會例如達到:

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

我曾嘗試這個。我很抱歉在帖子中沒有提及這一點。 實際上,它會爲每種類型的語句生成一封電子郵件消息: Log.Error(「遇到錯誤。」); 在過去,我會在腳本的末尾得到一個統一的錯誤消息。 我試圖defaultBatchPostingLimit的較大值,但這並沒有幫助。 – Christna