使用Autofac和SeriLog解决Microsoft.Extensions.Logging ILogger而不是ILogger <T>

时间:2019-11-06 07:25:31

标签: logging dependency-injection 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注入的类自动配置正确的上下文记录器。

那么有没有一种方法可以使它们与AutofacSeriLogMicrosoft.Extensions.Logging一起使用?

我尝试了很多,却没有付出很多努力。

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

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

0 个答案:

没有答案