[英]ASP.NET Core startup message log
我有一個 ASP.NET Core 3.1 應用程序,它是從 ASP.NET Core 2.0 升級的。 我們希望通過配置的結構化日志選項獲取舊的啟動消息(“現在正在監聽:http://localhost:5000”等)。 這適用於新的 3.1 項目,但我無法弄清楚如何在啟動時不使用ConfigureWebHostDefaults()
方法的現有項目中啟用它。 例如,此日志通過結構化日志記錄啟動:
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
但這不會:
public static void Main(string[] args)
{
new WebHostBuilder()
.UseKestrel()
.ConfigureLogging((hostingContext, logging) =>
{
logging.AddDebug();
logging.AddConsole();
})
.UseStartup<Startup>()
.Build()
.Run();
}
我發現了這個問題:
ConfigureWebHostDefaults 和 ConfigureWebHost 方法之間有什么區別?
並掃描了那里鏈接的代碼,但我發現空白。 將 Kestrel 連接到日志記錄基礎設施的魔法咒語是什么?
最后,我們只需要完全切換到新的主機構建器( CreateHostBuilder
與舊的CreateWebHostBuilder
)。 我們之前嘗試過,但是當我們在ConfigureLogging
添加我們的自定義日志提供程序時,我們最終得到了重復的日志消息,因此我們在沒有完全理解差異的情況下回滾到舊方式。 缺少的一點是調用ClearProviders()
。 之前,我們有:
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args)
.UseKestrel()
.ConfigureAppConfiguration((context, config) => { ... }))
.ConfigureLogging((hostingContext, logging) =>
{
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddProvider(new CustomLoggerProvider());
logging.AddDebug();
})
.UseStartup<Startup>();
現在:
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) => { ... } ))
.ConfigureLogging((hostBuilder, logging) =>
{
logging.ClearProviders();
logging.AddConfiguration(hostBuilder.Configuration.GetSection("Logging"));
logging.AddProvider(new CustomLoggerProvider());
logging.AddDebug();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
現在 Kestrel 很好地將它的狀態消息與其他所有內容一起記錄到首選記錄器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.