'ILoggerFactory' tidak mengandung definisi untuk 'AddConsole'

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

Saya telah menemukan potongan kode di atas di Github . Ini memberikan kesalahan berikut:

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

Saya menggunakan NET Core 3.0 dan saya telah menginstal paket NuGet berikut.

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

Mengapa saya mendapatkan itu ILoggerFactorytidak memiliki metode AddConsole()? Bagaimana saya bisa memperbaikinya?

Drago
sumber
Pertanyaan saya mungkin bodoh, tetapi apakah Anda memeriksa bahwa AddConsoledefinisi metode termasuk dalam apa yang Anda nyatakan dengan usingpernyataan?
Romain Reboulleau

Jawaban:

6

Coba gunakan ServiceCollection untuk mengonfigurasi logging di core 3.0

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

Saya baru saja menjalankan ini setelah kursus Pluralsight. Saya mendahului diri saya sebelum slide berikutnya menjelaskan mengapa .AddConsole mereka berfungsi di ILoggerFactory.Create.

Meskipun Anda hanya perlu using Microsoft.Extensions.Loggingdi kelas Anda, Anda perlu secara eksplisit menambahkan referensi paket ke aplikasi .Net Core Anda agar metode .AddConsole dapat ditemukan.

dotnet add package Microsoft.Extensions.Logging.Console

dan tambahkan pernyataan menggunakan ini ke kode Anda

using Microsoft.Extensions.Logging;
crumdev
sumber
2

Dengan .NET Core 3.0 sangat berbeda untuk menambahkan logging konsol. Anda harus menggunakan LoggerFactory.Create () untuk menambahkan ini. lihat dokumen microsoft di sini

CLoc
sumber
2
Ini tidak berfungsi bahkan contoh yang diberikan dari MS tidak berfungsi
Charles Okwuagwu
1
apakah Anda mendapatkan pesan kesalahan dalam contoh, atau apa yang tidak berhasil untuk Anda? Beberapa informasi tidak akan buruk, jadi kami dapat membantu Anda alih-alih mendistribusikan downvote secara langsung
CLoc
Contoh dari dokumen Microsoft yang Anda kutip secara langsung akan mencantumkan AddConsole () sebagai tidak ditemukan
Charles Okwuagwu