gpt4 book ai didi

asp.net-core - ASP.Net 5 登录类库

转载 作者:行者123 更新时间:2023-12-02 09:18:22 25 4
gpt4 key购买 nike

我对依赖注入(inject)有点陌生。我正在尝试开始使用 ASP.NET 5,并且正在努力弄清楚如何使用 ASP.NET 5 类库中的服务。尤其是像日志记录和 EF 数据访问这样简单的事情。

例如,我已按照此处的指南进行操作: http://docs.asp.net/en/latest/fundamentals/logging.html

这使我能够登录主应用程序。然后如何在我的类库中输出日志事件?

我知道从类库中引用主应用程序是不好的做法,并且想弄清楚如何正确执行它。

最佳答案

通过传递 ILogger<YourClass> 为您的类创建一个记录器在构造函数中与示例中完全相同:

public class MyClass : IMyClass
{
private readonly ILogger<MyClass> _logger;

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

public void MyMethod()
{
_logger.LogInformation("a log");
}
}

或者传递ILoggerFactory :

public class MyClass: IMyClass
{
private readonly ILogger _logger;

public (ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreatLogger("MyClass");
}

public void MyMethod()
{
_logger.LogInformation("a log");
}
}

并通过 Dependency Injection 解决您的类(class):

services.AddTransient<IMyClass, MyClass>();

然后您可以在 Controller 中使用它:

[Route("api/[controller]")]
public class TodoController : Controller
{
private readonly IMyClass _myClass;
private readonly ILogger<TodoController> _logger;

public TodoController(IMyClass myClass,
ILogger<TodoController> logger)
{
_myClass = myClass;
_logger = logger;
}
}

关于asp.net-core - ASP.Net 5 登录类库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33896008/

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