'ILoggerFactory' ไม่มีคำจำกัดความสำหรับ 'AddConsole'


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

ฉันได้พบชิ้นส่วนของโค้ดข้างต้นบนGithub มันทำให้เกิดข้อผิดพลาดดังต่อไปนี้:

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

ฉันใช้ NET Core 3.0 และฉันได้ติดตั้งแพ็คเกจ NuGet ต่อไปนี้แล้ว

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

ทำไมฉันถึงได้รับที่ILoggerFactoryไม่มีวิธีAddConsole()? ฉันจะแก้ไขสิ่งนี้ได้อย่างไร



คำถามของฉันอาจจะงี่เง่า แต่คุณได้ตรวจสอบว่าAddConsoleคำจำกัดความวิธีการรวมอยู่ในสิ่งที่คุณประกาศด้วยusingงบ?
Romain Reboulleau

คำตอบ:


6

ลองใช้ ServiceCollection เพื่อกำหนดค่าการบันทึกในแกน 3.0

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

20

ฉันเพิ่งพบเจอกับ Pluralsight ฉันได้ล่วงหน้าก่อนที่สไลด์ถัดไปจะอธิบายว่าทำไม AddAdsole ของพวกเขาถึงทำงานใน ILoggerFactory

แม้ว่าคุณจะต้องการเพียงแค่using Microsoft.Extensions.Loggingในชั้นเรียนของคุณคุณต้องเพิ่มการอ้างอิงแพ็กเกจลงในแอป. Net Core ของคุณอย่างชัดเจนเพื่อหาวิธีการ. AdConConsole

dotnet add package Microsoft.Extensions.Logging.Console

และเพิ่มสิ่งนี้โดยใช้คำสั่งในรหัสของคุณ

using Microsoft.Extensions.Logging;

2

ด้วย. NET Core 3.0 มันค่อนข้างแตกต่างในการเพิ่มการบันทึกคอนโซล คุณต้องใช้ LoggerFactory.Create () เพื่อเพิ่มสิ่งนี้ ดูเอกสาร Microsoft ได้ที่นี่


2
สิ่งนี้ใช้ไม่ได้แม้ตัวอย่างจาก MS จะไม่ทำงาน
Charles Okwuagwu

1
คุณได้รับข้อความแสดงข้อผิดพลาดในตัวอย่างหรือสิ่งที่ไม่ได้ผลสำหรับคุณ ข้อมูลบางอย่างจะไม่เลวร้ายดังนั้นเราจึงสามารถช่วยคุณแทนที่จะเผยแพร่ downvote โดยตรง
CLoc

ตัวอย่างจากเอกสารของ Microsoft ที่คุณยกมาโดยตรงจะแสดงรายการ AddConsole () ที่ไม่พบ
Charles Okwuagwu
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.