'ILoggerFactory' não contém uma definição para 'AddConsole'

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

Encontrei o código acima no Github . Dá o seguinte erro:

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

Estou usando o NET Core 3.0 e tenho os seguintes pacotes NuGet instalados.

<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" />

Por que recebo que ILoggerFactorynão possui o método AddConsole()? Como posso consertar isso?

Drago
fonte
Minha pergunta pode ser estúpida, mas você verificou se a AddConsoledefinição do método está incluída no que você declarou com usinginstruções?
Romain Reboulleau

Respostas:

6

Tente usar o ServiceCollection para configurar o log no núcleo 3.0

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

Acabei de me deparar com isso após um curso sobre a Pluralsight. Fiquei à frente de mim mesmo antes do próximo slide, explicando por que o .AddConsole estava trabalhando no ILoggerFactory.Create.

Mesmo que você precise apenas de using Microsoft.Extensions.Loggingsua classe, adicione explicitamente uma referência de pacote ao seu aplicativo .Net Core para que o método .AddConsole seja encontrado.

dotnet add package Microsoft.Extensions.Logging.Console

e adicione esta instrução using ao seu código

using Microsoft.Extensions.Logging;
crumdev
fonte
2

Com o .NET Core 3.0, é bem diferente adicionar o log do console. Você precisa usar LoggerFactory.Create () para adicionar isso. veja os documentos da microsoft aqui

CLoc
fonte
2
Isso não funciona, mesmo o exemplo fornecido pelo MS não funciona #
Charles Okwuagwu 16/11/19
11
você recebe uma mensagem de erro no exemplo ou o que não funciona para você? Algumas informações não seria ruim, então podemos ajudá-lo em vez de distribuir um downvote diretamente
CLOC
O exemplo dos documentos da Microsoft que você citou diretamente listará AddConsole () como não encontrado.
Charles Okwuagwu 26/11/19