C# 使用EnableRetryOnFailure时记录瞬时故障

C# 使用EnableRetryOnFailure时记录瞬时故障,c#,sql-server,entity-framework,asp.net-core,entity-framework-core,C#,Sql Server,Entity Framework,Asp.net Core,Entity Framework Core,我有一个控制工业生产设备的程序,总是在循环中执行任务。这些任务的一部分是检查SQLServer数据库中的值 偶尔(每天几次)我们会遇到暂时性故障,导致程序必须手动重新启动。为了防止出现这种情况,我为UseSqlServer启用了EnableRetryOnFailure选项。该程序现在不会崩溃,但我希望记录何时发生这种暂时性故障,以及必须使用重试机制 如何专门为这些重试添加日志记录 我假设我可以创建一个自定义的执行策略,并覆盖OnRetry方法。有人举过这样的例子吗?难道没有更好的解决办法吗 se

我有一个控制工业生产设备的程序,总是在循环中执行任务。这些任务的一部分是检查SQLServer数据库中的值

偶尔(每天几次)我们会遇到暂时性故障,导致程序必须手动重新启动。为了防止出现这种情况,我为
UseSqlServer
启用了
EnableRetryOnFailure
选项。该程序现在不会崩溃,但我希望记录何时发生这种暂时性故障,以及必须使用重试机制

如何专门为这些重试添加日志记录

我假设我可以创建一个自定义的
执行策略
,并覆盖OnRetry方法。有人举过这样的例子吗?难道没有更好的解决办法吗

services.AddDbContext<DbContext>(options =>
{
    options.UseSqlServer(connectionString, o =>
    {
        o.EnableRetryOnFailure();
    });
});
services.AddDbContext(选项=>
{
选项。使用SQLServer(connectionString,o=>
{
o、 EnableRetryOnFailure();
});
});

检查。EF Core使用日志记录基础设施。您可以配置为每个错误类别记录的内容,以及where@PanagiotisKanavos知道我在哪里可以找到它可能是什么日志类别的列表吗?或者我可以在
ExecutionStrategy
的源代码中找到它们的登录地址吗?名称在类下定义。这是值得的,因为它表明EF Core通过事件ID存储在configures warnings by CoreEventID中,并通过DBContextOptions Builder使用日志记录和低开销事件源。