This question is related to Steven’s answer - here. He proposed a very good logger wrapper. I will paste his code below:
public interface ILogger
{
void Log(LogEntry entry);
}
public static class LoggerExtensions
{
public static void Log(this ILogger logger, string message)
{
logger.Log(new LogEntry(LoggingEventType.Information,
message, null));
}
public static void Log(this ILogger logger, Exception exception)
{
logger.Log(new LogEntry(LoggingEventType.Error,
exception.Message, exception));
}
// More methods here.
}
So, my question is what is the proper way to create implementation that proxies to Serilog?
Note: this question is related to this question about log4net but now specific to Serilog.
you should create something like:
As I understand from Stevens answer: Yes, you should do this.
If you are using a DI container, then just use the DI container to map
ILogger
toSerilogAdapter
. You also need to registerSerilog.ILogger
, or just give an instance of Serilog logger to the DI container to inject it to the SerilogAdapter constructor.If you don't use a DI container, i.e., you use Pure DI, then you do something like this: