'ILoggerFactory' no contiene una definición para 'AddConsole'

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

He encontrado el fragmento de código anterior en Github . Da el siguiente error:

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

Estoy usando NET Core 3.0 y tengo los siguientes paquetes 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 qué obtengo que ILoggerFactoryno tiene el método AddConsole()? ¿Cómo puedo arreglar esto?

Drago
fuente
Mi pregunta puede ser estúpida, pero ¿verificó que la AddConsoledefinición del método está incluida en lo que declaró con las usingdeclaraciones?
Romain Reboulleau

Respuestas:

6

Intente usar ServiceCollection para configurar el inicio de sesión en core 3.0

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

Me encontré con esto después de un curso sobre Pluralsight. Me adelanté antes de la siguiente diapositiva explicando por qué su .AddConsole estaba trabajando en ILoggerFactory.Create.

Aunque solo necesita using Microsoft.Extensions.Loggingen su clase, debe agregar explícitamente una referencia de paquete a su aplicación .Net Core para poder encontrar el método .AddConsole.

dotnet add package Microsoft.Extensions.Logging.Console

y agregue esto usando la declaración a su código

using Microsoft.Extensions.Logging;
crumdev
fuente
2

Con .NET Core 3.0 es muy diferente agregar el registro de la consola. Tiene que usar LoggerFactory.Create () para agregar esto. mira los documentos de Microsoft aquí

CLoc
fuente
2
Esto no funciona, incluso el ejemplo proporcionado por MS no funciona
Charles Okwuagwu
1
¿recibe un mensaje de error en el ejemplo, o lo que no funciona para usted? Parte de la información no sería mala, por lo que podemos ayudarlo en lugar de distribuir un
voto a favor
El ejemplo de los documentos de Microsoft que citó directamente enumerará AddConsole () como no encontrado
Charles Okwuagwu