「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のコースをたどってこれに遭遇しました。.AddConsoleがILoggerFactory.Createで機能していた理由を説明する次のスライドの前に、自分より先に進みました。

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

dotnet add package Microsoft.Extensions.Logging.Console

このusingステートメントをコードに追加します

using Microsoft.Extensions.Logging;

2

.NET Core 3.0では、コンソールログを追加するのとはかなり異なります。これを追加するには、LoggerFactory.Create()を使用する必要があります。 ここでマイクロソフトのドキュメントを見てください


2
これは、MSから提供された例でも機能しない
Charles Okwuagwu

1
例でエラーメッセージが表示されますか、それとも機能しないのですか?一部の情報は悪くありません。そのため、反対票を直接配布する代わりに、お手伝いします
CLoc

直接引用したMicrosoftのドキュメントの例では、AddConsole()が見つからないものとしてリストされます
Charles Okwuagwu
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.