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



Мой вопрос может быть глупым, но вы проверили, что 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;

2

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


2
Это не работает, даже пример, предоставленный MS, не работает
Чарльз Okwuagwu

1
Вы получаете сообщение об ошибке в примере, или что у вас не работает? Некоторая информация не была бы плохой, поэтому мы можем помочь вам, вместо того, чтобы напрямую распространять голосование
CLoc

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