如何在 .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>>();
我有一个 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>>();