我有一个使用Serilog进行日志记录的Web API(.NET Core 3.1)。 Serilog在IWebHostBuilder
中很早就被添加了:
public static IWebHostBuilder CreateWebHostBuilder(string[] args)
{
return WebHost
.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseSerilog((context, configuration) =>
{
if (context.HostingEnvironment.IsDevelopment())
{
configuration.WriteTo.Console(LogEventLevel.Debug);
return;
}
configuration.WriteTo.ApplicationInsights(TelemetryConverter.Traces, LogEventLevel.Error);
});
}
这意味着(据我所知),我需要在此时已经配置好记录器。因此,这是我在主函数中做的第一件事:
public static int Main(string[] args)
{
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(Configuration)
.CreateLogger();
var host = CreateWebHostBuilder(args).Build();
host.Run();
}
但是,代码行
.ReadFrom.Configuration(Configuration)
需要设置配置。通常情况下,这是在 StartUp
中完成的(据我所知),但此时尚未运行。显然,我可以将我的LoggerConfiguration
移到稍后,但在配置之前将调用.UseSerilog
。那么,当我还没有设置它时,如何使用
IConfugration
配置Serilog?