We use Simple Injector in ASP.NET Core application. Recently we've decided to use Serilog for logging purposes.
Configuration was done in Program.cs as stated in their documentation. Then, in order to make Simple Injector able to resolve ILoggerFactory
I did something like this:
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)
}
After that ILoggerFactory
can be injected wherever we use it. And it works fine (creates new instances ILogger<T>
).
But this is annoying, to create instance from factory every time we need.
It would be better to get ILogger<T>
directly in dependent class, instead of ILoggerFactory
.
So, how can I register ILogger<T>
to get instance in case like below?
public class HelloWorldController : Controller
{
public HelloWorldController(ILogger<HelloWorldController> logger)
{
// ...
}
}