【问题标题】:Suppress EF core 3.0.x initialized msg抑制 EF core 3.0.x 初始化消息
【发布时间】:2019-06-02 22:42:48
【问题描述】:

我有:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) 
{
  string connectionString = "mydb.db;";
  optionsBuilder
  .UseLoggerFactory(MainWorker.ConsoleLoggerFactory)
  .EnableSensitiveDataLogging(true)
  .UseSqlite(connectionString);
}

每当我访问我的 DBContext 时,控制台就会显示

信息:Microsoft.EntityFrameworkCore.Infrastructure[10403] Entity Framework Core 3.0.0-preview4.19176.6 已初始化

有没有办法过滤掉这个特定的消息?当我做很多查询时,它只会让我的控制台调试窗口变得混乱..

【问题讨论】:

  • 那是什么? ef-core-2.0? ef-core2.1? ef-core-2.2?
  • 如果您不想让记录器登录到控制台,为什么还要告诉记录器使用控​​制台?
  • @MickyD - EFCore 3.0 没有 stackoverflow 标签,这是我真正追求的,但我找不到任何 EFCore 版本的任何信息
  • @Eric Phillips - 因为我希望其他消息不显示这个
  • 所以使用Adapter Pattern 包装控制台记录器并忽略该消息。

标签: c# entity-framework-core ef-core-3.0


【解决方案1】:

EF Core 特定的日志消息是通过DbContextOptionsBuilder.ConfigureWarnings 方法配置的(是的,这个名字有点误导)。

相关消息的EventIdCoreEventId.ContextInitialized。然后你使用Ignore 压制它:

optionsBuilder.ConfigureWarnings(warnings => warnings
    .Ignore(CoreEventId.ContextInitialized));

当然,它可以与其他 optionsBuilder 调用链接。此外,您可能希望使用 CoreEventId.ContextDisposed 抑制第二个与上下文生命周期相关的日志消息。

【讨论】:

    猜你喜欢
    • 2023-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多