如何处理IWebHostBuilder的弃用.是否仍需要IWebHostBuilder时使用Serial()



UseSerial((扩展已被弃用*,用于serilog aspnetcore 5.0.0版本中的IWebHostBuilder。然而,我仍然使用IWebHostBuilder和Startup类(aspnetcore 6(,IWebHostBuilder并没有被弃用。

既然弃用意味着将来要删除,我应该如何利用Serilog?


参考:https://github.com/serilog/serilog-aspnetcore/releases/tag/v5.0.0"将IWebHostBuilder扩展标记为在具有IHostBuilder的平台上过时">

我能够通过切换到IHostBuilder而不是IWebHostBuilder来实现这一点。在我的案例中,关键是调用ConfigureWebHostDefaults(或ConfigureWebHost(,然后您可以在其中使用IWebHostBuilder。

通过这种方式,我可以在IHostBuilder上调用UseSerilog,同时仍然像以前一样使用IWebHostBuilder的Startup类。

示例:

public static void Main(string[] args)
{
// temp initial logging
Log.Logger = new LoggerConfiguration()
.WriteTo.Console()
.CreateBootstrapLogger();
using var app =
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webHostBuilder
=> webHostBuilder.ConfigureAppConfiguration((hostingContext, config) =>
_ = config.SetBasePath(hostingContext.HostingEnvironment.ContentRootPath)
.AddJsonFile("appsettings.json", false, true))
.UseStartup<Startup>())
.UseSerilog(
(hostingContext, loggerConfig) =>
loggerConfig
.ReadFrom.Configuration(hostingContext.Configuration)
.Enrich.FromLogContext(),
writeToProviders: true)
.Build();
app.Run();
}

我用解决

var builder = WebApplication.CreateBuilder(args);
builder.Host.UseSerilog();

最新更新