如何在.NET 6中获取ILoggerFactory

Far*_*med 15 c# iloggerfactory .net-6.0

In.Net5 ILoggerFactory用作配置函数,Startup.cs如下所示:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{
    //here we used loggerFactory
    loggerFactory.AddProvider(loggerprovider);
}
Run Code Online (Sandbox Code Playgroud)

如何.Net6通过应用程序或构建器获取它

var app = builder.Build();
Run Code Online (Sandbox Code Playgroud)

或者

var builder = WebApplication.CreateBuilder(args);
Run Code Online (Sandbox Code Playgroud)

Joh*_*udy 10

要获取实际的记录器工厂实例:

var app = builder.Build();
var lf = app.Services.GetRequiredService<ILoggerFactory>();
Run Code Online (Sandbox Code Playgroud)

还可以使用 GetService 而不是 GetRequiredService。当服务不存在时,GetService 返回 null,并且 GetRequiredService 抛出异常。这里讨论的优点和缺点:

https://andrewlock.net/the-difference- Between-getservice-and-getrquiredservice-in-asp-net-core/


Gur*_*ron 9

WebApplicationBuilder公开Logging具有可用扩展方法的属性AddProvider(ILoggingBuilder, ILoggerProvider)。尝试使用它:

builder.Logging.AddProvider(loggerprovider);
Run Code Online (Sandbox Code Playgroud)