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