'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.