I'm planning to use Serilog in my ASP.NET Core 3 application and I would like to use inline initialization.
I'm only going to use the ILogger<T>
interface from my application.
Is there any particular reason for assigning a new logger instance to the Log.Logger
property if I don't intend to directly use the logging methods inside the Log
class?
I found the following sample on the Serilog integration for ASP.NET Core page:
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.Console()
.CreateLogger();
I understand that for logging application start-up errors I need to create a new logger instance, but couldn't I just use it like:
using Serilog;
public class Program
{
public static int Main(string[] args)
{
using var startupLogger = new LoggerConfiguration()
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Information)
.Enrich.FromLogContext()
.WriteTo.Console()
.CreateLogger();
try
{
startupLogger.Information("Starting web host");
CreateHostBuilder(args).Build().Run();
return 0;
}
catch (Exception ex)
{
startupLogger.Fatal(ex, "Host terminated unexpectedly");
return 1;
}
}
}