如何抑制serilog中特定的全局查询过滤器警告? 我正在使用Serilog在我的ASP.NET核心应用程序中记录并遇到与实体框架核心中与全局查询过滤器有关的警告。我已经应用了一个hasqueryfilter来排除软盘...

问题描述 投票:0回答:1
,这是在日志中生成警告,例如:

[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();

c# asp.net-core entity-framework-core serilog
1个回答
0
投票
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);

    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.