'ILoggerFactory' не містить визначення для 'AddConsole'


20
private ILoggerFactory ConfigureLogging(ILoggerFactory factory)
{
      factory.AddConsole();
      return factory;
}

Я знайшов фрагмент коду вище в Github . Це дає таку помилку:

'ILoggerFactory' does not contain a definition for 'AddConsole' and the best extension method overload 'ConsoleLoggerExtensions.AddConsole(ILoggingBuilder)' requires a receiver of type 'ILoggingBuilder'

Я використовую NET Core 3.0 і в мене встановлені наступні пакети NuGet.

<PackageReference Include="Discord.Net" Version="2.1.1" />
<PackageReference Include="Discord.Net.Commands" Version="2.1.1" />
<PackageReference Include="Discord.Net.WebSocket" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.Configuration" Version="3.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.0.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging" Version="3.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.0.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="3.0.0" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.0.0" />

Чому я вважаю, що ILoggerFactoryметоду немає AddConsole()? Як я можу це виправити?



Моє запитання може бути дурним, але ви перевірили, AddConsoleчи включено визначення методу в те, що ви заявили із usingзаявами?
Romain Reboulleau

Відповіді:


6

Спробуйте скористатися ServiceCollection для налаштування журналу в ядрі 3.0

private IServiceCollection ConfigureLogging(IServiceCollection factory)
{
      factory.AddLogging(opt =>
                         {
                               opt.AddConsole();
                         })
      return factory;
}

20

Я просто натрапив на це після курсу з питань плюралізму. Я випередив себе перед наступним слайдом, пояснюючи, чому їхній .AddConsole працює в ILoggerFactory.Create.

Незважаючи на те, що вам потрібно лише using Microsoft.Extensions.Loggingу вашому класі, вам потрібно явно додати посилання на пакет до вашої програми .Net Core, щоб знайти .AddConsole метод.

dotnet add package Microsoft.Extensions.Logging.Console

і додайте це за допомогою оператора у свій код

using Microsoft.Extensions.Logging;

2

З .NET Core 3.0 зовсім інше додавати консольний журнал. Ви повинні використовувати LoggerFactory.Create (), щоб додати це. дивіться документи Microsoft


2
Це не працює, навіть приклад, представлений MS, не працює
Charles Okwuagwu

1
ви отримуєте повідомлення про помилку в прикладі чи те, що не працює для вас? Деяка інформація не була б поганою, тому ми можемо допомогти вам замість того, щоб поширювати шлюб безпосередньо
CLoc

На прикладі документів, які ви цитували безпосередньо в Microsoft, буде вказано AddConsole () як не знайдено
Charles Okwuagwu
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.