[英].NET Core 6 - How to get an ILogger instance without Dependency Injection in Program.cs during Startup
[英]How to get ILoggerFactory instance in .NET 6 Program.cs class
在 .NET 5 中,可以在 Startup 构造函数中访问ILoggerFactory
,如下所示:
public Startup(
IConfiguration configuration,
IHostEnvironment hostEnvironment,
ILoggerFactory loggerFactory)
{
LoggerFactory = loggerFactory;
Configuration = configuration;
HostEnvironment = hostEnvironment;
}
我只有一个自定义包,它接收ILoggerFactory
实例作为参数
public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.AddCustomMvc(Configuration, loggerFactory: LoggerFactory);
}
在 .NET 6 中,我怎样才能像这样在app.Build()
之前获得ILoggerFactory
var builder = WebApplication.CreateBuilder(args);
var configuration = builder.Configuration;
builder.Services.AddCustomMvc(configuration, loggerFactory: loggerFactory);
var app = builder.Build();
app.Run();
恐怕除了手动创建ILoggerFactory
之外没有太多选择(就像登录顶级语句Program
文件所做的那样):
using var loggerFactory =
LoggerFactory.Create(lb => lb.AddConfiguration(builder.Configuration));
builder.Services.AddCustomMvc(configuration, loggerFactory: loggerFactory);
这将要求您重复记录设置。
其他选项:
AddCustomMvc
方法,因此无需传递loggerFactory
(更改注册以从IServiceProvider
解析)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.