태그 보관물: nuget

nuget

‘ILoggerFactory’에 ‘AddConsole’에 대한 정의가 없습니다. factory) {

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()습니까? 이 문제를 어떻게 해결할 수 있습니까?



답변

ServiceCollection을 사용하여 코어 3.0에서 로깅 구성

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

답변

나는 Pluralsight에 대한 코스를 따라 이것에 부딪쳤다. 다음 슬라이드 전에 .AddConsole이 ILoggerFactory.Create에서 작동하는 이유를 설명합니다.

using Microsoft.Extensions.Logging클래스 에만 필요하더라도 .AddConsole 메서드를 찾으려면 .Net Core 앱에 패키지 참조를 명시 적으로 추가해야합니다.

dotnet add package Microsoft.Extensions.Logging.Console

이 using 문을 코드에 추가하십시오.

using Microsoft.Extensions.Logging;

답변

.NET Core 3.0의 경우 콘솔 로깅을 추가하는 것은 상당히 다릅니다. 이것을 추가하려면 LoggerFactory.Create ()를 사용해야합니다.
여기에서 Microsoft 문서를보십시오


답변