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

Bun*_*nut 13 c# .net-6.0

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

var serviceCollection = new ServiceCollection();
var serviceProvider = serviceCollection.BuildServiceProvider();
_logger = serviceProvider.GetService<ILogger<Program>>();
Run Code Online (Sandbox Code Playgroud)

然而,这会导致_logger == null.

如何将记录器添加到 Program.cs 中?

Vit*_*kov 11

如果您使用的是最小托管模型,则非常简单:

...
var app = builder.Build();
app.Logger.LogInformation("Starting Application");
...
Run Code Online (Sandbox Code Playgroud)

上述代码显示在ASP.NET Core 官方文档中


Ole*_*egI 10

你缺少这一行:

serviceCollection.AddLogging();
Run Code Online (Sandbox Code Playgroud)

所以完整的代码如下所示:

var serviceCollection = new ServiceCollection();
serviceCollection.AddLogging();
var serviceProvider = serviceCollection.BuildServiceProvider();
_logger = serviceProvider.GetService<ILogger<Program>>();
Run Code Online (Sandbox Code Playgroud)