web-dev-qa-db-ja.com

「ILoggerFactory」には「AddConsole」の定義が含まれていません

_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()がないのはなぜですか?どうすれば修正できますか?

16
Drago

ServiceCollectionを使用してコア3.0でロギングを構成してみてください

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

Pluralsightのコースをたどってこれに遭遇しました。彼らの.AddConsoleがILoggerFactory.Createで機能していた理由を説明する次のスライドの前に、自分より先に進みました。

必要なのはusing Microsoft.Extensions.Loggingクラスで、.AddConsoleメソッドを見つけるために、.Net Coreアプリへのパッケージ参照を明示的に追加する必要があります。

dotnet add package Microsoft.Extensions.Logging.Console
10
crumdev

.NET Core 3.0では、コンソールログを追加するのとはかなり異なります。これを追加するには、LoggerFactory.Create()を使用する必要があります。 Microsoftのドキュメントはこちら

1
CLoc