.NET Core 6 中的控制台登录?
Console Logging in .NET Core 6?
将 .NET 6 Core 用于控制台应用程序,我无法使调试日志记录正常工作(未显示任何内容)。而且,我已将 Microsoft.Extensions.Logging.Console
添加到项目中。
您将在下面看到我试图获取对记录器的引用的两种方法。
请注意 logger.LogInformation
有效,但 logger.LogDebug
无效。
问题:如何让 LogDebug
工作?
Program.cs
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
您需要在日志中添加以下内容 Debug
:
builder.SetMinimumLevel(LogLevel.Debug);
有关于如何 Create logs in Main:
的文档
IHost host = Host.CreateDefaultBuilder(args).Build();
var logger = host.Services.GetRequiredService<ILogger<Program>>();
logger.LogDebug("Host created.");
// ...
通过 CreateDefaultBuilder
创建 IHost
后,您就可以利用 appsettings.json
文件(参见 Configure logging):
{
"Logging": {
"LogLevel": {
"Default": "Debug", // set default logs to debug level
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}
只是不要忘记将 appsettings.json
复制到 .csproj
文件中的输出。默认情况下,控制台应用程序不会这样做,而这正是我所缺少的。
<ItemGroup>
<None Update="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
将 .NET 6 Core 用于控制台应用程序,我无法使调试日志记录正常工作(未显示任何内容)。而且,我已将 Microsoft.Extensions.Logging.Console
添加到项目中。
您将在下面看到我试图获取对记录器的引用的两种方法。
请注意 logger.LogInformation
有效,但 logger.LogDebug
无效。
问题:如何让 LogDebug
工作?
Program.cs
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
您需要在日志中添加以下内容 Debug
:
builder.SetMinimumLevel(LogLevel.Debug);
有关于如何 Create logs in Main:
的文档IHost host = Host.CreateDefaultBuilder(args).Build();
var logger = host.Services.GetRequiredService<ILogger<Program>>();
logger.LogDebug("Host created.");
// ...
通过 CreateDefaultBuilder
创建 IHost
后,您就可以利用 appsettings.json
文件(参见 Configure logging):
{
"Logging": {
"LogLevel": {
"Default": "Debug", // set default logs to debug level
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
}
}
只是不要忘记将 appsettings.json
复制到 .csproj
文件中的输出。默认情况下,控制台应用程序不会这样做,而这正是我所缺少的。
<ItemGroup>
<None Update="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>