![](/img/trans.png)
[英]Azure webjobs does not override appsettings.json with Azure Application Settings
[英]What does MinimumLevel and Override mean in appsettings.json logging context?
我正在查看Serilog示例項目中的appsettings.json,其中包含以下代碼段:
"MinimumLevel": {
"Default": "Debug",
"Override": {
"System": "Information",
"Microsoft": "Information"
}
}
在這種情況下, Override
的目的是什么? System
和Microsoft
條目在MinimumLevel
節點中沒有父設置,那么它的主要內容是什么?
除非我完全誤解了Override
的目的。
默認情況下,您說的是嚴重性為“ Debug”或更高的任何日志條目都應發送到您的接收器(控制台,文件等)。
這與Microsoft的日志記錄文件行為類似:
例如,日志記錄配置通常由應用程序設置文件的“
Logging
部分提供。 以下示例顯示了典型的appsettings.Development.json文件的內容:{ "Logging": { "LogLevel": { "Default": "Debug", "System": "Information", "Microsoft": "Information" }, "Console": { "IncludeScopes": true } } }
[...]
“
Logging
下的LogLevel
屬性指定了記錄所選類別的最低級別。 在示例中,“System
和“Microsoft
類別記錄在“Information
級別,所有其他類別記錄在“Debug
級別。
覆蓋部分用於更改具有這些名稱空間的日志條目。 通常,您希望看到代碼的 Debug
日志條目,但是希望看到“不是您的代碼”的更高級別(例如Information
或Warning
),例如Microsoft和System。
除了將此配置放入配置文件中,您還可以使用代碼:
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseSerilog((ctx, cfg) =>
{
cfg.ReadFrom.Configuration(ctx.Configuration)
.MinimumLevel.Debug()
.MinimumLevel.Override("Microsoft", LogEventLevel.Information);
})
.Build();
來自kimsereyblog.blogspot.com的代碼
他們對此過程的解釋是:
從示例中,我們可以配置默認的最小日志記錄級別
.MinimumLevel.Debug()
。 我們還可以覆蓋某些名稱空間的默認值,例如,在這里,我們將Microsoft
名稱空間的最低日志記錄級別設置為Information
。 這將防止ASP.NET Core在保留我們自己的調試日志的同時記錄所有調試日志。
來自nblumhardt.com的另一種解釋:
Override
的第一個參數是源上下文前綴,通常與與記錄器關聯的類的名稱空間限定的類型名稱匹配。...
因此,當記錄器歸
Microsoft.*
名稱空間中的類型所有時,以上配置的作用是僅在Warning
級別或更高級別生成事件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.