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); // ... } }
我需要如何修改代码以在运行时停用或修改日志记录的日志级别?这可能吗?
编辑
我想这样做的真正原因很奇怪。我的大量EF核心查询都已完成(与数据库进行了双重检查),但昂贵的查询日志仍会在开发人员控制台中持续出现10分钟(不是开玩笑…)。在此期间,整个应用程序不响应。我想关闭这一大堆查询的日志记录,但我不想完全关闭它。
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); // ... } } }
现在,我不必再等待我的应用程序用数百万查询日志填充(单线程)控制台调试输出。