首页 > 解决方案 > 解决 Microsoft.Extensions.Logging ILogger 而不是 ILogger使用 Autofac 和 SeriLog

问题描述

使用 Microsoft.Extensions.Logging 时,通常会ILoggerfactory在记录器实现和ILogger<>.

我正在寻找一种注入非泛型ILogger并让 IoC 容器(在本例中为 Autofac)生成类型ILogger<>的方法,该类被注入。

在这篇文章https://blog.rsuter.com/logging-with-ilogger-recommendations-and-best-practices/中说:

更喜欢注入ILogger接口,如果需要,也可以注入ILogger<T>接口。理想情况下,您的类的构造函数会请求 ILogger,而 IoC 框架会创建请求类ILogger<T>所在位置的实例。T

我同意它,我希望能够只注入一个 ILogger 并获得正确的上下文实例。

autofac serilog 集成(https://github.com/nblumhardt/autofac-serilog-integration)做了类似的事情,但对于 Serilog。

该库将 Autofac 配置为自动ILogger为注入 an 的每个类配置正确的上下文记录器。

那么有没有办法让它与Autofac,SeriLog和一起工作Microsoft.Extensions.Logging

我已经尝试了一点,没有很多努力。

Steven 提出了一些很酷的东西,我可以通过使用上面的 autofac serilog 集成并将 Serilog Logger 注入到我的自定义抽象中来工作,但是这样我将失去结构化日志记录等的能力。

如果有人可以提供一些指导,那就太好了。

标签: loggingdependency-injectionautofacserilog

解决方案


推荐阅读