Turn off .NET Core EF LoggerFactory at runtime



我正在使用LoggerFactory来记录我的EF Core(3.1.2(DataContext:

public static readonly ILoggerFactory LoggerFactory = Microsoft.Extensions.Logging.LoggerFactory.Create(builder => { builder.AddConsole().AddDebug(); });
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (optionsBuilder.IsConfigured == false)
{
optionsBuilder.UseLoggerFactory(LoggerFactory);
// ...
}
}

我需要如何修改我的代码以在运行时停用或修改LogLevel日志记录?这可能吗?

编辑

我想这么做的实际原因很奇怪。我的大量EF Core查询都完成了(与数据库进行了双重检查(,但昂贵的查询日志仍然在开发者控制台中显示了大约10分钟(不是开玩笑的…(,没有停顿。在此期间,整个应用程序没有响应。我想关闭这一大批查询的日志记录,但我不想完全关闭它。

一位同事想出了一个非常适合我的场景的巧妙解决方案。由于我不使用任何依赖项注入来简化我运行并行查询的能力,所以我可以使用可选的构造函数参数关闭特定DataContext实例的日志记录:

public MyDataContext(bool enableLog = true)
{
this.enableLog = enableLog;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (optionsBuilder.IsConfigured == false)
{
if (this.enableLog == true)
{
optionsBuilder.UseLoggerFactory(LoggerFactory);
// ...
}
}
}

现在,我不再需要等待我的应用程序用数百万查询日志填充(单线程(控制台调试输出。

相关内容

最新更新