我正在为.NET Core应用程序(WPF和.NET Core 3)配置日志记录。我想通过我的库利用Microsoft.Extensions.Logging
,以便有一个通用接口,并且在为应用程序配置DI时可以轻松换出日志记录提供程序。读取此SO question和此blog post似乎不是一个好主意,将ILoggerFactory
或ILogger<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
。鉴于我发现这些日志记录材料有些令人困惑,以上内容似乎合理还是我在做明显错误的事情?