gpt4 book ai didi

logging - 为什么 ASP.NET Core DI 知道如何解析 ILogger,但不知道如何解析 ILogger?

转载 作者:行者123 更新时间:2023-12-01 23:15:10 27 4
gpt4 key购买 nike

如果类 T 包含对 ILogger 的依赖,则依赖关系已解决:

public class Foo
{
private ILogger _logger;

public Foo(ILogger<Foo> logger)
{
_logger = logger;
}
}

但以下内容不起作用,因为 logger 将为 null:

public class Foo
{
private ILogger _logger;

public Foo(ILogger logger)
{
_logger = logger;
}
}

最佳答案

日志记录将以下服务添加到 DI

services.TryAdd(ServiceDescriptor.Singleton<ILoggerFactory, LoggerFactory>());
services.TryAdd(ServiceDescriptor.Singleton(typeof(ILogger<>), typeof(Logger<>)));

Logger<>取决于ILoggerFactory来自 DI。

对于第二种情况,您需要注入(inject) ILoggerFactory 而不是 ILogger。

public Foo(ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreateLogger("logger name here");
}

关于logging - 为什么 ASP.NET Core DI 知道如何解析 ILogger<T>,但不知道如何解析 ILogger?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38255053/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com