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


20
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 qui ILoggerFactoryn'a pas la méthode AddConsole()? Comment puis-je réparer cela?



Ma question peut être stupide, mais avez-vous vérifié que la AddConsoledéfinition de la méthode est incluse dans ce que vous avez déclaré avec les usinginstructions?
— Romain Reboulleau

Réponses:


6

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

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

20

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 using Microsoft.Extensions.Loggingde 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

et ajoutez cette instruction using à votre code

using Microsoft.Extensions.Logging;

2

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 de microsoft ici


2
Cela ne fonctionne pas, même l'exemple fourni par MS ne fonctionne pas
— Charles Okwuagwu

1
obtenez-vous un message d'erreur dans l'exemple, ou qu'est-ce qui ne fonctionne pas pour vous? Certaines informations ne seraient pas mauvaises, nous pouvons donc vous aider au lieu de distribuer un downvote directement
— CLoc

L'exemple des documents Microsoft que vous avez cité directement répertoriera AddConsole () comme introuvable
— Charles Okwuagwu
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.