如何在 .NET 6 中创建记录器 Program.cs

How to create a Logger in .NET 6 Program.cs

我有一个 Data.Migrations 项目,它将 运行 任何 Entity Framework 迁移以更新数据库模型。 最近我将此项目更新为 .NET 6,并使用以下代码向 Program.cs 添加了一个记录器:

var serviceCollection = new ServiceCollection();
var serviceProvider = serviceCollection.BuildServiceProvider();
_logger = serviceProvider.GetService<ILogger<Program>>();

但是结果是 _logger == null

如何向 Program.cs 添加记录器?

您错过了这一行:

serviceCollection.AddLogging();

因此完整代码如下所示:

var serviceCollection = new ServiceCollection();
serviceCollection.AddLogging();
var serviceProvider = serviceCollection.BuildServiceProvider();
_logger = serviceProvider.GetService<ILogger<Program>>();

Visual Studio 报错如下 编译器错误 CS0246。它不识别程序

正如@Olegi 在上面的回答中提到的,可以创建 Program.cs 的记录器。但是,如果此记录器必须登录在 WebApplicationBuilder 上配置的日志记录提供程序,则可以使用下面的行

var logger = builder.Logging.Services.BuildServiceProvider().GetRequiredService<ILogger<Program>>();