Serilog电子邮件汇:在申请结束时发送一封电子邮件

时间:2017-06-30 18:35:11

标签: c# email configuration serilog

我在用C#编写的控制台应用程序中使用Serilog.Sinks.Email。 它是" restrictedToMinimumLevel" ="警告",我在整个程序中散布了警告和错误消息。

昨天运行此应用程序时,我在运行结束时收到了一封电子邮件(当控件到达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" />

我是否应该使用任何配置设置,以确保脚本在任何运行结束时始终最多发送一封电子邮件(包含合并警告和错误)?

有谁能请我指出在这方面有帮助的文件?

2 个答案:

答案 0 :(得分:1)

我认为您已达到一批的限制或已更改它。默认情况下,它设置为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" />

答案 1 :(得分:0)

我通过编写包装器类解决了这个问题。

相关问题