簡體   English   中英

在Appsettings.json日志記錄上下文中MinimumLevel和Override是什么意思?

[英]What does MinimumLevel and Override mean in appsettings.json logging context?

我正在查看Serilog示例項目中的appsettings.json,其中包含以下代碼段:

"MinimumLevel": {
  "Default": "Debug",
  "Override": {
    "System": "Information",
    "Microsoft": "Information"
  }
}

在這種情況下, Override的目的是什么? SystemMicrosoft條目在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日志條目,但是希望看到“不是您的代碼”的更高級別(例如InformationWarning ),例如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.

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