我是否可以在将要重试的瞬态错误上禁用EF Core错误记录?

问题描述 投票:2回答:1

当我在EF Core中使用EnableRetryOnFailure时,我会在每个瞬态错误上获得错误级别的日志。绝大多数时候这些瞬态错误是可以安全忽略的,因为事务即将被重试并且可能会成功。

但是,我没有看到任何方法来区分情况a)“由于暂时性错误而重试”和b)“所有允许的重试都失败了”。理想情况下,前者是较低严重性的LogLevel,或者包含在某种SqlTransientRetryException或其他东西中。

这对我来说是一个问题,因为我不想收到警报,提醒我注意每个瞬态异常,但我也不想只筛选出任何Microsoft.EntityFrameworkCore.Query错误日志,因为如果错误不是短暂的或全部允许重试失败,然后我想了解它。

c# entity-framework-core
1个回答
0
投票

我看了一下EF Core文档的Logging部分,DbLoggerCategory类的文档,并且在GitHub上的代码上看了一下,看起来对于瞬态错误没有任何区别......就记录而言去。

我认为你能做的最好的事情就是向团队提出一个问题。也许他们可以为瞬态故障引入一个类别。

作为一个延伸(我还没有检查),也许记录消息本身有一些不同的东西。如果有,你可以想象写一个记录接收器,通过查看消息的内容来过滤这些。这似乎是hackish,而不是很好地利用时间。

另一种可能性是禁止所有日志记录并打包你的电话;当一个“真正的”非瞬态异常终于冒出来时,你可以记录下来。

© www.soinside.com 2019 - 2024. All rights reserved.