iT邦幫忙

2022 iThome 鐵人賽

DAY 19
0
Software Development

語言只是工具,遊走在需求和技術間的腦力激盪之旅系列 第 19

Day 19 - Case 3 :紀錄Api的一舉一動(.NET 6 Web Api Logging)

  • 分享至 

  • xImage
  •  

昨天提到Api範本如何建立之後,今天會稍微說明一下如何紀錄系統的相關資訊,以及可以用哪一些套件去定義不同種類的訊息,以利開發者在開發和測試的過程中快速掌握情境和問題。

Logging的作用

紀錄系統日誌的做法可參照微軟官方文件的資訊,然後剛剛提到定義不同種類資訊的部分,可以先用Log level的資訊檢視(如下圖),依照不同的Level做個補充說明。
Imgur

先以個人的開發習慣說明一下,通常在測試環境的階段會較常使用Debug和Information,但初期分類的方式,就是紀錄需要除錯以及該Api被呼叫的紀錄,接著隨功能逐漸完善與進度接近上線時,會在測試環境規劃跟正式環境一致的Log紀錄規則。

至於正式環境的Log資訊參考可參考下方官方網站說明

In production:
Logging at the Trace or Debug levels produces a high-volume of detailed log messages. To control costs and not exceed data storage limits, log Trace and Debug level messages to a high-volume, low-cost data store. Consider limiting Trace and Debug to specific categories.

上述提到Trace和Information的資訊建議存取到大容量、低成本的儲存空間,這個意思在於當前要存取大量的Log時,可以考量將這一些資訊放置到其他的Server(提到這個可能會有人想說為什麼要存這麼多Log,其中有一部分會搭配監控的規劃(參考資訊),確保Web Application正常運作以及整體基礎設施能夠最佳化)。

第三方套件的延伸應用

而接著提到第三方套件的Log紀錄,首先參照微軟官方的文章可以看到有多個寫Log的套件,個人比較常用的套件名稱叫NLog(NLog參考資源),接著就以這個套件做個操作說明。
Imgur

進入到該套件的Github專案頁面後,看到Getting started下面的連結選項選擇當前開發所使用的框架(因為是.NET 6 Web api所以選擇ASP.NET Core)。
Imgur

專案檔加入需要使用到的函示庫(如下圖)
Imgur

<ItemGroup>
  <PackageReference Include="NLog.Web.AspNetCore" Version="5.*" />
  <PackageReference Include="NLog" Version="5.*" />
</ItemGroup>

新增nlog.config檔案並且將參考的xml資訊新增到裡面,其中可以留意targets標籤內target的相關設定,其中的fileName屬性就是寫入的路徑與檔案名稱,另外layout的屬性則是寫Log時的共用樣式(其中的${message}指的就是程式端自定義的訊息)。
Imgur
Imgur

而延續上述什麼是自定義的訊息首先在progam.cs引用專案檔使用的函示庫,並且針對NLog做初始化的宣告行為後,寫入一個Level為Debug的訊息。

using NLog;
using NLog.Web;

var logger = NLog.LogManager.Setup().LoadConfigurationFromAppSettings().GetCurrentClassLogger();
logger.Debug("init main");

接著執行應用程式後依照nlog.config內剛剛提到的fileName路徑,確認是否有Log檔案順利新增,如果有的話再將Log檔案打開後進一步確認是否有成功寫入自定義的訊息。
Imgur
Imgur

上述的NLog從設定到寫入結果的呈現算是很基礎的設定,所以如果要針對controller寫入相關的Log資訊,需要做DI注入的動作(但需要留意minimal Api架構下定義和寫Log都在同一個地方)。


上一篇
Day 18 - Case 3 :Web Api開發起手式(.NET 6 Web Api)
下一篇
Day 20 - Case 3 :針對開發的Api來訂個合約吧!(.NET 6 Web Api Doc套件選擇篇)
系列文
語言只是工具,遊走在需求和技術間的腦力激盪之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言