Using Microsoft Logging extensions
Serilog.Debugging.SelfLog.Enable(msg => Debug.WriteLine(msg));
Serilog.Debugging.SelfLog.Enable(Console.Error);
loggerConfig = new LoggerConfiguration()
.MinimumLevel.Verbose();
loggerConfig
.WriteTo.Debug(outputTemplate: "[{Timestamp:HH:mm:ss.fff} {Level:u3}] | {Message:lj}{NewLine}{Exception}") // defined in Serilog.Sinks.Debug assembly.
.WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss.fff} {Level:u3}] | {Message:lj}{NewLine}{Exception}")
.WriteTo.File($"run.log", rollingInterval: Serilog.RollingInterval.Day);
loggerFactory = (ILoggerFactory)new LoggerFactory();
Log.Logger = loggerConfig.CreateLogger();
loggerFactory.AddSerilog(Log.Logger);
logger = loggerFactory.CreateLogger<Program>();
logger.LogInformation("Logger initialized");