如何通过DI解析ILogger <T>?

ksp*_*rin 3 asp.net-core

我看到各种库都可以ILogger<T>通过DI 解决。例如,请参见Identity的SignInManager类。

在哪里ILogger<T>向DI容器注册才能实现此目的?

我所能找到的只是一个ILoggerFactory正在Hosting WebHostBuilder类中注册的实例。允许解析是有道理的ILoggerFactory,但不能ILogger<T>根据应用程序代码进行解析。

从Logging 示例中,为了创建一个ILogger,您必须显式调用factory.CreateLogger()

Joe*_*tte 6

ILogger <>在此处注册为Logger <>:https : //github.com/aspnet/Logging/blob/master/src/Microsoft.Extensions.Logging/LoggingServiceCollectionExtensions.cs

Logger <>将ILoggerFactory带到其自己的构造函数中,因此它可以创建任何类型的实际记录器:https : //github.com/aspnet/Logging/blob/master/src/Microsoft.Extensions.Logging.Abstractions/LoggerOfT.cs

因此,与对ILoggerFactory进行构造以手动创建记录器相比,对ILogger进行构造函数依赖性似乎更简单。但是,在某些情况下,如果需要创建多种类型的记录器或新建也需要创建记录器的其他对象,则可能需要ILoggerFactory。


归档时间:

查看次数:

2033 次

最近记录:

6 年,10 月 前