【发布时间】:2019-03-27 00:08:31
【问题描述】:
我们在 ASP.NET Core 应用程序中使用 Simple Injector。最近我们决定使用 Serilog 进行日志记录。
如documentation 所述,在 Program.cs 中完成了配置。然后,为了让 Simple Injector 能够解析ILoggerFactory,我做了这样的事情:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvc();
// As per my understanding, we force SimpleInjector to use
// ILoggerFactory registration from IApplicationBuilder
container.CrossWire<ILoggerFactory>(app)
}
之后,ILoggerFactory 可以在我们使用的任何地方注入。它工作正常(创建新实例ILogger<T>)。
但这很烦人,每次需要时都从工厂创建实例。
最好直接在依赖类中获取ILogger<T>,而不是ILoggerFactory。
那么,我如何注册ILogger<T> 以获取实例,以防出现如下情况?
public class HelloWorldController : Controller
{
public HelloWorldController(ILogger<HelloWorldController> logger)
{
// ...
}
}
【问题讨论】:
标签: c# asp.net-core simple-injector serilog