'ILoggerFactory' non contiene una definizione per 'AddConsole'


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

Ho trovato il pezzo di codice sopra su Github . Dà il seguente errore:

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

Sto usando NET Core 3.0 e ho i seguenti pacchetti NuGet installati.

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

Perché ottengo che ILoggerFactorynon ha il metodo AddConsole()? Come posso risolvere questo problema?



La mia domanda può essere stupida, ma hai verificato che la AddConsoledefinizione del metodo sia inclusa in ciò che hai dichiarato con le usingdichiarazioni?
Romain Reboulleau,

Risposte:


6

Prova a utilizzare ServiceCollection per configurare la registrazione nel core 3.0

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

20

Mi sono appena imbattuto in questo dopo un corso su Pluralsight. Mi sono preceduto prima della prossima diapositiva che spiega perché il loro .AddConsole stava lavorando in ILoggerFactory.Create.

Anche se hai solo bisogno using Microsoft.Extensions.Loggingnella tua classe, devi aggiungere esplicitamente un riferimento al pacchetto all'app .Net Core per trovare il metodo .AddConsole.

dotnet add package Microsoft.Extensions.Logging.Console

e aggiungi questa istruzione usando il tuo codice

using Microsoft.Extensions.Logging;

2

Con .NET Core 3.0 è abbastanza diverso aggiungere la registrazione della console. Devi usare LoggerFactory.Create () per aggiungere questo. guarda documenti Microsoft qui


2
Questo non funziona anche se l'esempio fornito dalla SM non funziona
Charles Okwuagwu,

1
viene visualizzato un messaggio di errore nell'esempio o cosa non funziona per te? Alcune informazioni non sarebbero male, quindi possiamo aiutarti invece di distribuire direttamente un downvote
CLoc

L'esempio dei documenti Microsoft che hai citato direttamente elencherà AddConsole () come non trovato
Charles Okwuagwu,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.