1. 程式人生 > 其它 >關於.net core中NLog的日誌結構化

關於.net core中NLog的日誌結構化

0、最近研究serilog結構化日誌,感覺這玩意主要是在程式碼中配置,配置檔案中配置的功能比較坑爹,所以還是搞一搞nlog的結構化吧,感覺serilog不是很靠譜的樣子,個人還是喜歡從配置檔案中配置。可能是之前用log4net遺留下來的習慣吧。。。。。。

1、nlog.config配置檔案格式

 

<target xsi:type="File" name="allfile" fileName="nlog-AspNetCore-all-${shortdate}.log">
      <layout xsi:type="JsonLayout" includeEventProperties
="false" > <attribute name="time" layout="${longdate}"/> <attribute name="level" layout="${level:upperCase=true}"/> <attribute name="message" encode="false" layout="${message}" /> </layout> </target>

2、日誌結構化的語法

User user = new User() { Name = "
zmy", Age = 18 }; Person person = new Person() { Name = "test", Age = 20 }; _logOpe.LogError("測試{@user}",user);

 

 

3、關於結構化的一些配置的屬性資訊

 

(1)、Attribute屬性:

 

  • name - 必需。JSON 金鑰的名稱
  • layout - JSON 值的佈局(可以是巢狀的 JsonLayout)
  • encode - 為屬性啟用或禁用 JSON 編碼。預設值 = 真

    在 NLog 4.1 中引入

  • escapeUnicode - 使用 \u 轉義 unicode 字元(非 ascii)。預設值 = 真

    在 NLog 4.4.7 中引入

  • IncludeEmptyValue - 佈局輸出為空時包括屬性。預設值 = 假

    在 NLog 4.5 中引入

  • EscapeForwardSlash - 是否也應該轉義正斜槓。預設值 = false,

    在 NLog 4.6.8 中引入。在NLog 4.7之前,它沒有從父級繼承值。在 NLog 5.0 之前,預設值為 true   

 

 

(2)、外層layout屬性

  • suppressSpaces - 啟用此選項可抑制輸出 JSON 中的額外空格。預設情況下處於禁用狀態。

    在 NLog 4.1 中引入

  • renderEmptyObject - 獲取或設定用於呈現空物件值的選項,預設值 。{}true

    NLog 4.3.7 中引入

  • IncludeGdc - 指示是否包含 GlobalDiagnosticsContext (GDC) 字典的內容。布林

    在 NLog 4.4.10 中引入

  • IncludeEventProperties - 包括日誌事件的所有事件屬性?預設:false

    在 NLog 5.0 選項被命名為 IncludeAllProperties 之前

  • IncludeScopeProperties - 指示是否包括範圍上下文屬性字典。預設:false

    在 NLog 5.0 選項被命名為 IncludeMdlc 或 IncludeMdc 之前

  • excludeProperties - 以逗號分隔的字串,其中包含要排除的屬性的名稱。僅當包含事件屬性為 時才使用。不區分大小寫。預設值為空 當名稱包含逗號時,請用單引號將值括起來。例如.true'value,withquote',value2

    在 NLog 4.4 中引入

  • excludeEmptyProperties - 排除值為 null 或空的事件屬性(還檢查 GDC、MDC、MDLC)。

    NLog 4.7.7 中引入

  • EscapeUnicode - 轉義非 ascii 字元?布林。預設:true

    在 NLog 4.4.7 中引入

  • MaxRecursionLimit - JSON 序列化程式在退出之前應遵循物件引用多遠。整數。預設值(0 = 無物件反射)1

    在 NLog 4.5 中引入。在 NLog 5.0 之前,預設值為(無物件反射)0

  • EscapeForwardSlash - 是否應該對正斜槓進行轉義?如果為 true,將轉換為 。預設/\/false

    在 NLog 4.6.8 中引入。在 NLog 5.0 之前,預設值為true