[23:25:24 wrn]实体'帐户'具有定义的全局查询过滤器,并且是与实体“ ACCOUNTROLE”关系的所需端。当过滤出所需的实体时,这可能会导致意外结果。我想抑制与全球查询过滤器有关的这些特定警告,同时仍保留其他EF核心警告和错误。如何配置Serilog仅过滤这些警告而不会影响其他日志级别或消息?
您可以尝试使用软件包,然后执行以下操作:
Serilog.Filters.Expressions
var @event = CoreEventId.PossibleIncorrectRequiredNavigationWithQueryFilterInteractionWarning;
var logger = new LoggerConfiguration()
// ...
.Filter
.ByExcluding($"EventId.Id = {@event.Id} and EventId.Name = '{@event.Name}'")
.CreateLogger();
ConfigureWarnings
致电:
services.AddDbContextFactory<YourContext>(o =>
o.Use...(...)
.ConfigureWarnings(builder =>
{
builder.Ignore(CoreEventId.PossibleIncorrectRequiredNavigationWithQueryFilterInteractionWarning);
}));
或甚至通过为依赖实体配置查询过滤器(在此处假设您的实体):
modelBuilder.Entity<Account>()
.HasQueryFilter(a => !a.IsDeleted);
modelBuilder.Entity<AccountRole>()
.HasQueryFilter(a => !a.Account.IsDeleted);