private ILoggerFactory ConfigureLogging(ILoggerFactory factory)
{
factory.AddConsole();
return factory;
}
Run Code Online (Sandbox Code Playgroud)
我在Github上找到了上面的一段代码。它给出了以下错误:
“ILoggerFactory”不包含“AddConsole”的定义,并且最佳扩展方法重载“ConsoleLoggerExtensions.AddConsole(ILoggingBuilder)”需要类型为“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" />
Run Code Online (Sandbox Code Playgroud)
为什么我得到那个ILoggerFactory 没有方法AddConsole()?我怎样才能解决这个问题?
使用.NET 6 Core作为控制台应用程序,我无法使调试日志记录正常工作(没有显示任何内容)。并且,我已添加Microsoft.Extensions.Logging.Console到该项目中。
您将在下面看到我尝试获取记录器引用的两种方法。
请注意,这logger.LogInformation确实有效,但logger.LogDebug没有。
问题:我如何开始LogDebug工作?
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
var serviceProvider = new ServiceCollection()
.AddLogging(builder => {
builder.ClearProviders();
builder.AddConsole();
builder.AddDebug();
})
.BuildServiceProvider();
// I've tried this
var logger = serviceProvider.GetService<ILogger<Program>>();
// And this
var logger = serviceProvider.GetService<ILoggerFactory>().CreateLogger<Program>>();
logger.LogDebug("hello world"); // <-- This DOESN'T work
logger.LogInformation("something"); // <-- This DOES work
Run Code Online (Sandbox Code Playgroud)