当仍然需要 IWebHostBuilder 时如何处理 IWebHostBuilder.UseSerilog() 的弃用?

问题描述 投票:0回答:2

在 serilog-aspnetcore 版本 5.0.0 中,IWebHostBuilder 的 UseSerilog() 扩展已被弃用*。不过,我仍在使用 IWebHostBuilder 和 Startup 类(aspnetcore 6),并且 IWebHostBuilder 并未被弃用。

由于弃用意味着将来会被删除,我应该如何利用 Serilog 继续前进?


参考: https://github.com/serilog/serilog-aspnetcore/releases/tag/v5.0.0 “在使用 IHostBuilder 的平台上将 IWebHostBuilder 扩展标记为已过时”

serilog
2个回答
22
投票

我可以通过切换到

IHostBuilder
而不是
IWebHostBuilder
来实现此功能。在我的例子中,关键是拨打
ConfigureWebHostDefaults
(或
ConfigureWebHost
),然后您可以使用
IWebHostBuilder

通过这种方式,我可以在

UseSerilog
上调用
IHostBuilder
,同时仍然像以前一样使用
Startup
类和
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();
}

0
投票

我解决了:

var builder = WebApplication.CreateBuilder(args);
builder.Host.UseSerilog();
© www.soinside.com 2019 - 2024. All rights reserved.