web-dev-qa-db-fra.com

'ILoggerFactory' ne contient pas de définition pour 'AddConsole'

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

J'ai trouvé le morceau de code ci-dessus sur Github . Il donne l'erreur suivante:

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

J'utilise NET Core 3.0 et j'ai installé les packages NuGet suivants.

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

Pourquoi est-ce que j'obtiens que ILoggerFactory n'a pas la méthode AddConsole()? Comment puis-je réparer cela?

16
Drago

Essayez d'utiliser ServiceCollection pour configurer la journalisation dans Core 3.0

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

Je suis juste tombé sur ceci après un cours sur Pluralsight. J'ai pris de l'avance sur moi-même avant la diapositive suivante expliquant pourquoi leur .AddConsole fonctionnait dans ILoggerFactory.Create.

Même si vous n'avez besoin que de using Microsoft.Extensions.Logging dans votre classe, vous devez ajouter explicitement une référence de package à votre application .Net Core pour que la méthode .AddConsole soit trouvée.

dotnet add package Microsoft.Extensions.Logging.Console
10
crumdev

Avec .NET Core 3.0, il est très différent d'ajouter la journalisation de la console. Vous devez utiliser LoggerFactory.Create () pour ajouter cela. regardez les documents Microsoft ici

1
CLoc