使用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
注入的类自动配置正确的上下文记录器。
那么有没有一种方法可以使它们与Autofac
,SeriLog
和Microsoft.Extensions.Logging
一起使用?
我尝试了很多,却没有付出很多努力。
Steven提出了something cool,我可以通过使用上面的autofac serilog集成并将Serilog Logger注入我的自定义抽象中来工作,但是这样我将失去结构化日志记录等功能。
如果有人可以提供一些指导,那就太好了。