„ILoggerFactory” nie zawiera definicji „AddConsole”

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

Znalazłem powyższy fragment kodu na Github . Daje następujący błąd:

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

Używam NET Core 3.0 i mam zainstalowane następujące pakiety 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" />

Dlaczego dostaję, że ILoggerFactorynie ma metody AddConsole()? Jak mogę to naprawić?

Drago
źródło
Moje pytanie może być głupie, ale czy sprawdziłeś, czy AddConsoledefinicja metody jest zawarta w tym, co zadeklarowano w usinginstrukcjach?
Romain Reboulleau

Odpowiedzi:

6

Spróbuj użyć ServiceCollection, aby skonfigurować logowanie w rdzeniu 3.0

private IServiceCollection ConfigureLogging(IServiceCollection factory)
{
      factory.AddLogging(opt =>
                         {
                               opt.AddConsole();
                         })
      return factory;
}
William Magno
źródło
20

Właśnie wpadłem na to po kursie Pluralsight. Wyprzedziłem się przed następnym slajdem wyjaśniając, dlaczego ich .AddConsole pracowało w ILoggerFactory.Create.

Nawet jeśli potrzebujesz tylko using Microsoft.Extensions.Loggingw swojej klasie, musisz jawnie dodać odwołanie do pakietu do aplikacji .Net Core, aby znaleźć metodę .AddConsole.

dotnet add package Microsoft.Extensions.Logging.Console

i dodaj tę instrukcję using do swojego kodu

using Microsoft.Extensions.Logging;
crumdev
źródło
2

W .NET Core 3.0 dodawanie rejestrowania konsoli jest zupełnie inne. Musisz użyć LoggerFactory.Create (), aby dodać to. spójrz tutaj na dokumenty Microsoft

CLoc
źródło
2
To nie działa, nawet przykład z MS nie działa
Charles Okwuagwu
1
otrzymujesz komunikat o błędzie w przykładzie lub co nie działa dla ciebie? Niektóre informacje nie byłyby złe, więc możemy Ci pomóc zamiast rozpowszechniać opinie negatywne
CLoc
Przykład z dokumentów Microsoft, które zacytowałeś bezpośrednio, wyświetli listę AddConsole () jako nie znalezioną
Charles Okwuagwu