繁体   English   中英

如何在 .NET 6 Program.cs 类中获取 ILoggerFactory 实例

[英]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解析)

在 .net 6

[英]Calling class function from program.cs at runtimes in .net 6

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM