首页 > 解决方案 > 如何修复过时的 ILoggerFactory 方法?

问题描述

我将我的项目升级到 .NET Core 2.2.x 并收到关于以下代码的过时警告 - 两行:

public void Configure(IApplicationBuilder app, 
                      IHostingEnvironment env, 
                      ILoggerFactory loggerFactory) 
  {
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));

修复的建议是The recommended alternative is AddConsole(this ILoggingBuilder builder)。我以为这就是我正在使用的。

我在这里想念什么?

标签: c#.netasp.net-core.net-coreasp.net-core-2.2

解决方案


我今天有同样的问题。

从 Startup.cs 中删除您的日志记录配置,然后转到您的 Program.cs 文件并添加如下内容:

var host = new WebHostBuilder()
    .UseKestrel()
    .UseContentRoot(Directory.GetCurrentDirectory())
    .UseIISIntegration()
    .UseStartup<Startup>()
    .ConfigureLogging((hostingContext, logging) =>
    {
        logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
        logging.AddConsole();
        logging.AddDebug();
    })
    .Build();

这使用了“builder”,因为变量“logging”是一个 IloggingBuilder(而您的代码仍在使用 ILoggerFactory)

更新:我刚刚尝试的另一种方法是留在 Startup.cs 中,但将日志内容从“配置”方法移动到“配置服务”,如下所示:

public void ConfigureServices(IServiceCollection services)
{
    services.AddLogging(loggingBuilder =>
    {
        loggingBuilder.AddConfiguration(Configuration.GetSection("Logging"));
        loggingBuilder.AddConsole();
        loggingBuilder.AddDebug();
    });
}

也许可以减少 Program.cs 的污染...


推荐阅读