Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Serilog电子邮件接收器:应用程序末尾的单个电子邮件_C#_Email_Configuration_Serilog - Fatal编程技术网

C# Serilog电子邮件接收器:应用程序末尾的单个电子邮件

C# Serilog电子邮件接收器:应用程序末尾的单个电子邮件,c#,email,configuration,serilog,C#,Email,Configuration,Serilog,我在用C#编写的控制台应用程序中使用Serilog.Sinks.Email。 它是“restrictedToMinimumLevel”=“Warning”,我在整个程序中都有警告和错误消息 当我昨天运行此应用程序时,我在运行结束时收到一封电子邮件(当控件到达Log.CloseAndFlush()时),此电子邮件包含运行期间生成的合并警告和错误 这是理想的功能,我很高兴我不需要编写一个包装类来实现它 当我今天运行同一个脚本时,我收到了一封电子邮件,说明遇到的每个错误 我对这种古怪的行为感到困惑。我

我在用C#编写的控制台应用程序中使用Serilog.Sinks.Email。 它是“restrictedToMinimumLevel”=“Warning”,我在整个程序中都有警告和错误消息

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

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


有人能给我指一下在这方面有帮助的文档吗?

我想您已经达到了一批的限制,或者已经更改了一批。默认情况下,它被设置为100,正如您在下面的代码中从
Serilog.Sinks.Email.EmailSink中看到的那样:

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

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

我确实尝试过这个。我很抱歉没有在帖子中提到这一点。事实上,它会为以下类型的每个语句生成一封电子邮件:Log.Error(“遇到错误”);在过去,我会在脚本末尾收到一条合并的错误消息。我尝试了defaultBatchPostingLimit的大值,但没有帮助。
<add key="serilog:write-to:Email.defaultBatchPostingLimit " value="999999" />