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.