gpt4 book ai didi

logging - 使用 NLog 进行依赖注入(inject)

转载 作者:行者123 更新时间:2023-12-02 02:43:56 30 4
gpt4 key购买 nike

我有一个 .NET Core Web 应用程序,我正在尝试通过 NLog 添加日志记录。在以前的项目中,我只是在每个类的顶部使用了类似以下内容:

private static Logger logger = LogManager.GetCurrentClassLogger();

我正在尝试尽可能在该项目中遵循更多最佳实践。

我的问题是,如何注入(inject)一个记录器,该记录器具有要注入(inject)的类的完全限定名称?

在我的startup.cs文件中,到目前为止我有以下内容:

services.AddScoped<BLL.Logging.NLogLogger>();

目前,NLogLogger 类通过 GetCurrentClassLogger() 创建 NLog Logger 的实例,使用时只会将名称报告为“BLL.Logging” .NLogLogger”而不是记录器被注入(inject)的实际类。

简化问题并使其更通用:如何传入 .NET Core 将向其中注入(inject)类的类的名称?

我考虑过类似下面的事情,但不知道如何实现它:

services.AddScoped<BLL.Logging.NLogLogger>(serviceProvider => new BLL.Logging.NLogLogger("class name here"));

最佳答案

使用 DI 指定ILogger<T>输入而不是 Logger ,其中T是使用记录器的类类型,因此 NLog 将了解该类。例如:

public class TodoController : Controller
{
private readonly ILogger _logger;

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

引用文献:

关于logging - 使用 NLog 进行依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41534253/

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