当仍然需要 IWebHostBuilder 时如何处理 IWebHostBuilder.UseSerilog() 的弃用?
How to handle deprecation of IWebHostBuilder.UseSerilog() when IWebHostBuilder is still needed?
serilog-aspnetcore 版本 5.0.0 中的 IWebHostBuilder 已弃用* UseSerilog() 扩展。但是我仍在使用 IWebHostBuilder 和 Startup class (aspnetcore 6),并且 IWebHostBuilder 没有被弃用。
由于弃用意味着将来会被删除,我应该如何利用 Serilog 向前发展?
参考:
https://github.com/serilog/serilog-aspnetcore/releases/tag/v5.0.0
“在具有 IHostBuilder 的平台上将 IWebHostBuilder 扩展标记为已过时”
我可以通过切换到 IHostBuilder 而不是 IWebHostBuilder 来让它工作。在我的案例中,关键是调用 ConfigureWebHostDefaults(或 ConfigureWebHost),然后您可以在其中使用 IWebHostBuilder。
通过这种方式,我可以在 IHostBuilder 上调用 UseSerilog,同时仍然像以前一样使用 Startup class 和 IWebHostBuilder。
示例:
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();
serilog-aspnetcore 版本 5.0.0 中的 IWebHostBuilder 已弃用* UseSerilog() 扩展。但是我仍在使用 IWebHostBuilder 和 Startup class (aspnetcore 6),并且 IWebHostBuilder 没有被弃用。
由于弃用意味着将来会被删除,我应该如何利用 Serilog 向前发展?
参考: https://github.com/serilog/serilog-aspnetcore/releases/tag/v5.0.0 “在具有 IHostBuilder 的平台上将 IWebHostBuilder 扩展标记为已过时”
我可以通过切换到 IHostBuilder 而不是 IWebHostBuilder 来让它工作。在我的案例中,关键是调用 ConfigureWebHostDefaults(或 ConfigureWebHost),然后您可以在其中使用 IWebHostBuilder。
通过这种方式,我可以在 IHostBuilder 上调用 UseSerilog,同时仍然像以前一样使用 Startup class 和 IWebHostBuilder。
示例:
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();