簡體   English   中英

可以從 Program.cs 自定義 Serilog 配置嗎?

[英]Custom Serilog config possible from Program.cs?

我在啟動構造函數期間在 ASP.NET Core 中生成自定義配置,如下所示:

public Startup(IWebHostEnvironment environment, IConfiguration configuration) {
    Environment = environment;

    // Add extra config - configs added later override ones added earlier when key names clash
    Configuration = new ConfigurationBuilder()
        .AddConfiguration(configuration)
        .AddXmlFile("appsettings.xml")
        .Build();
}

我的問題是,雖然這個新的IConfiguration可以從ConfigureServicesConfigure訪問,但不能從CreateHostBuilder (Program.cs) 中的.UseSerilog()調用訪問。 所以,我在打電話時無法訪問我的 XML 配置:

webBuilder
    .UseStartup<Startup>()
    .UseSerilog((context, config) => {
        config.ReadFrom.Configuration(context.Configuration);
    });

我怎樣才能解決這個問題? 我可以將新配置提供給UseSerilog() lambda,還是可以稍后在ConfigureServices()ConfigureServices()記錄器?

OK,我發現我可以.UseConfiguration()早前在IWebHostBuilder鏈(而不是在Startup的構造函數)在我的XML配置設置拉:

webBuilder
    .UseConfiguration(new ConfigurationBuilder().AddXmlFile("appsettings.xml").Build())
    .UseSerilog((context, config) => {
        config.ReadFrom.Configuration(context.Configuration);
    })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM