Как исправить устаревшие методы ILoggerFactory? - PullRequest
0 голосов
/ 18 декабря 2018

Я обновил свой проект до .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).Я думал, что это то, что я использую.

Чего мне здесь не хватает?

Ответы [ 4 ]

0 голосов
/ 11 мая 2019

Не беспокойтесь об этом - это самая глупая вещь !

Примечание

В следующем примере кода используется конструктор ConsoleLoggerProvider, который былустарел в версии 2.2.Надлежащие замены для устаревших интерфейсов API будут доступны в версии 3.0.В то же время, можно безопасно игнорировать и подавлять предупреждения.

Если вы думали, что забыли, что означало Устаревшее - вы этого не сделали!Не беспокойтесь об этом и просто проигнорируйте это сейчас - или отключите предупреждение (извините, у меня нет кода для этого).

(Жаль, что они не объяснили бы почемубыло сделано - это то, что я имею в виду тупой.)

0 голосов
/ 18 января 2019

В документации рекомендуется использовать AddConsole(this ILoggingBuilder builder), но для этого необходимо добавить ссылку на пакет NuGet Microsoft.Extensions.Logging.Console.

0 голосов
/ 11 марта 2019

В соответствии с проблемой, открытой для этого в GitHub, методы замены уже вызываются, если вы используете метод CreateDefaultBuilder () в вашем Program.cs.

https://github.com/aspnet/Docs/issues/9829

Единственный единственныйУ меня проблема в том, что я включил их только для непроизводственной среды ... и не вижу способа сделать это в будущем.

0 голосов
/ 19 декабря 2018

У меня была такая же проблема сегодня.

Удалите свою конфигурацию регистрации из 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, но переместить материал ведения журнала из' Configureметод 'ConfigureServices', подобный следующему:

        public void ConfigureServices(IServiceCollection services)
    {

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

    }

Возможно, сохраняет Program.cs менее загрязненным ...

...