Context
I've successfully configured Serilog in my ASP.NET Core application, only the DI part remains.
Question
Now I have two ILogger interfaces, one is Serilog.ILogger
the other is Microsoft.Extensions.Logging.ILogger
. Both works based on my Serilog config, and I do not know which to use? (I mean, after Serilog config in place Microsoft.Extensions.Logging.ILogger
also correctly logging through Serilog, so my config is honored)
In case Microsoft.Extensions.Logging.ILogger
I do know how to configure DI to make it work.
However in case of Serilog.ILogger
I see that Serilog has a static Log.Logger instance (probably a singleton)
I do not want to use this static property in my code, mainly for testing reasons, so I would like to to constructor inject it. The solution would be:
services.AddSingleton(Log.Logger); // Log.Logger is a singleton anyway
..but I am concerning about this singleton in a Web Application when many multiple threads will use this very same instance concurrently. Is it thread safe? If it is not, then what would be the solution to use Serilog.ILogger
with DI?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…