Ninject和Microsoft.Extensions.Logging

时间:2019-09-10 10:50:46

标签: c# logging .net-core ninject

我正在为.NET Core应用程序(WPF和.NET Core 3)配置日志记录。我想通过我的库利用Microsoft.Extensions.Logging,以便有一个通用接口,并且在为应用程序配置DI时可以轻松换出日志记录提供程序。读取此SO question和此blog post似乎不是一个好主意,将ILoggerFactoryILogger<T>注入到消费类中。相反,我们应该注入ILogger,但这将需要第三方IOC容器来为我们完成此操作。

基于此,并且由于我们正在使用Ninject,因此我将Ninject DI配置如下:

var loggerFactory = serviceProvider.GetService<ILoggerFactory>();
kernel.Bind<ILogger>()
   .ToMethod(context =>
       {
         var categoryName = context?.Request?.ParentRequest?.Service.FullName ?? "Unspecified";
         return loggerFactory.CreateLogger(categoryName);
       });

我认为应该给我与使用ILogger<T>相同的行为,但是要使用ILogger。鉴于我发现这些日志记录材料有些令人困惑,以上内容似乎合理还是我在做明显错误的事情?

0 个答案:

没有答案