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

Drago
la source
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;
}
William Magno
la source
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;
crumdev
la source
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

CLoc
la source
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