ILoggerFactory не содержит определения для AddConsole

21
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()? Как я могу это исправить?

Драго
источник
Возможный дубликат Как исправить устаревшие методы ILoggerFactory?
Голобич
Мой вопрос может быть глупым, но вы проверили, что AddConsoleопределение метода включено в то, что вы объявили с помощью usingоператоров?
Ромен Ребулло

Ответы:

6

Попробуйте использовать ServiceCollection для настройки входа в ядро ​​3.0

private IServiceCollection ConfigureLogging(IServiceCollection factory)
{
      factory.AddLogging(opt =>
                         {
                               opt.AddConsole();
                         })
      return factory;
}
Уильям Магно
источник
21

Я только столкнулся с этим после курса Pluralsight. Перед следующим слайдом я опередил себя, объяснив, почему их .AddConsole работал в ILoggerFactory.Create.

Даже если вам нужен только using Microsoft.Extensions.Loggingваш класс, вам нужно явно добавить ссылку на пакет в ваше приложение .Net Core, чтобы найти метод .AddConsole.

dotnet add package Microsoft.Extensions.Logging.Console

и добавьте это с помощью оператора в свой код

using Microsoft.Extensions.Logging;
crumdev
источник
2

В .NET Core 3.0 совсем иначе можно добавить ведение журнала консоли. Вы должны использовать LoggerFactory.Create (), чтобы добавить это. посмотрите документы Microsoft здесь

CLOC
источник
2
Это не работает, даже пример, предоставленный MS, не работает
Чарльз Okwuagwu
1
Вы получаете сообщение об ошибке в примере, или что у вас не работает? Некоторая информация не была бы плохой, поэтому мы можем помочь вам, вместо того, чтобы напрямую распространять голосование
CLoc
Пример из документов Microsoft, которые вы цитировали напрямую, перечислит AddConsole () как не найденный
Charles Okwuagwu