代码之家  ›  专栏  ›  技术社区  ›  ˈvɔlə

在运行时关闭.NET Core LoggerFactory

  •  0
  • ˈvɔlə  · 技术社区  · 6 年前

    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分钟(不是开玩笑…)。在此期间,整个应用程序不响应。我想关闭这一大堆查询的日志记录,但我不想完全关闭它。

    0 回复  |  直到 6 年前
        1
  •  1
  •   ˈvɔlə    6 年前

    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);
                // ...
            }
        }
    }
    

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

    推荐文章