Skip to main content

Command Palette

Search for a command to run...

[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 02 - ASP.NET Core 內建之 Logger 01

Updated
1 min read
[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 02 - ASP.NET Core 內建之 Logger 01

.NET Core Logging- Logging in ASP.NET Core 01

ASP.NET Core 其實本身已經內建了一套 Log 工具,透過 DI 的方式注入,就可以直接取得並使用 Log 的物件實體,而且也可以外掛第三方的 Log 架構

方便的是 ASP.NET Core 預設就已經將 Logger 物件放入 DI 容器中了,所以不需要再額外進行設定,只要直接透過 DI 的方式取得 Logger 物件實體


Logger 物件提供了不同層級的 Log,共分為六種,定義在 LogLevel 列舉中

  • Trace = 0 通常是用來輸出在開發或是偵錯過程中想要看到的資訊。 這些訊息可能包含敏感資訊,因此不應該在正式環境中啟用。 預設為不輸出。 例如:Credentials: {"User":"User", "Password":"P@ssw0rd"}
  • Debug = 1 通常是用來在正式環境中記錄一些除錯資訊。 由於此層級的 Log 數量可能很可觀,所以平常是不會開啟的,直到有需要時再開啟。 預設為不輸出。 例如:Emergency flag set to true.
  • Information = 2 通常是用來追蹤應用程式的操作或是運作流程。 例如:Request received for order id: 201809191111
  • Warning = 3 在應用程式流程中發生異常或意外事件。 這些記錄可能包含不會造成應用程式停止,但可能需要進行調查的錯誤或其他狀況。 已處理的例外狀況即為使用 Warning 記錄層級的常見位置。 例如:FileNotFoundException for file quotes.txt.
  • Error = 4 發生無法處理的錯誤和例外狀況。 這些訊息會指出目前的活動或作業 (例如目前的 HTTP 要求) 中的失敗,而不是整個應用程式的失敗。 例如:Cannot insert record due to duplicate key violation.
  • Critical = 5 發生需要立即注意的失敗。 例如:資料庫連線失敗、磁碟空間不足等情況。

如以下範例程式碼,直接宣告 Logger 物件,並透過 DI 容器注入,注意要引用 using Microsoft.Extensions.Logging; 命名空間,且 Logger 物件為泛型,所以要指定 Class 名稱,以此為例就是: ILogger<HomeController>

寫完程式碼後,就可以執行來看看,先在 terminal中輸入 dotnet run 指令來進行編譯並把應用程式跑起來,跑起來後就可以直接呼叫網頁,最後在 terminal 中就可以看到 Log 的輸出結果

在上圖的第二步驟紅框中,就可以看到 Log 輸出的結果,針對不同層級也會有不同的顯示樣式

而在第二步驟的綠框中則是事件代碼,通常在系統中都會定義事件代碼 例如說:資料庫無法連線的錯誤代碼設定為 001

因此在寫入 Log 時也可以傳入事件代碼以供事後快速辨別


還有一小部分要提到的是預設格式化訊息的方式,假設有 Log 事件如下

因其格式化的方式是依照參數的先後順序,而非於字串中的變數名稱而定 所以其輸出結果會為:name1 not match with: name2


也可以將例外傳入到 Log 裡


下一篇來介紹ASP.NET Core 內建之 Logger的組態設定、如何設定要記錄的 Log 層級以及如何輸出 Log 到不同的地方,而不是只是寫到 Console

More from this blog

Career-Ops 安裝與設定 — 用 AI 來幫你篩職缺、客製履歷

最近在看新的工作機會,光是瀏覽職缺、比對 JD、調整履歷就花了不少時間。 後來找到 Career-Ops 這個開源專案 作者 santifer 用這套系統篩了 740 多個職缺、產出 100 多份客製化履歷,最後拿到 Head of Applied AI 的 offer。 看起來蠻有意思的,所以我就在 Windows 上實際裝了一輪,這篇就來把整個安裝和設定的過程記錄下來。 我這邊搭配的 AI 後

Apr 12, 20265 min read
Career-Ops 安裝與設定 — 用 AI 來幫你篩職缺、客製履歷

讓 LLM 自動化你的 N8N 工作流程:n8n-mcp-server 安裝指南

前言 網路上一大堆都是在介紹如何在 N8N 裡面用 MCP 來呼叫其他工具,但是更多時候我希望 LLM 能直接幫我寫好或是修改 N8N 的工作流程 所以這篇就來介紹如何設定與使用 n8n-mcp-server 來讓 LLM 幫忙操控 N8N 在 GitHub 上有不少的 n8n-mcp-server,經過一下下的簡單搜索,我決定使用這個專案: n8n-mcp-server 原因在於說這個專案的實作提供了基本上所有需要編輯工作流程的功能,以下就來記錄安裝過程 MCP Server 設定 首先當然...

May 28, 20253 min read

[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 05 - Elmah - 02

.NET Core Logging- Elmah 02 上一篇我們提到了基本的使用方式,接下來的這一篇我們就來講講要怎麼把 Log 放到不同的儲存體上,以及如何過濾 Log Log 儲存方式 我們先來看這些 Log 倒底存在哪裡,目前共有三種儲存方式,如下: MemoryErrorLog — store errors in memory 預設為使用此方式,簡單來說就是將錯誤 Log 都存在記憶體裡,所以只要應用程式一重新啟動,Log 就沒了;但是也是最方便的方式,只是要注意如果 Log 太...

Oct 20, 20182 min read
[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 05 - Elmah - 02

[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 04 - Elmah - 01

.NET Core Logging- Elmah 01 Elmah 是我最一開始使用的 Log 工具,基本上它的功能就是將應用程式所有發生的錯誤記錄下來,不需要改變程式架構,而且又有介面可以觀看,十分的方便;它從 WebForm 時代就有了,到了 MVC 也是運作的很好,那這邊就來介紹一下 Elmah 要如何在 ASP.NET Core 中使用 (.NET Core 也可使用)。 不過很可惜的,目前並沒有釋出官方的 Elmah for .NET Core,不過有一個新專案: ElmahCore...

Oct 19, 20181 min read
[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 04 - Elmah - 01

[IT 鐵人賽] Azure Data Service - Day 04 - Cognitive Service - 辨識 - Video Indexer

Azure Data Service - Day 04 - Cognitive Service - Vision - Video Indexer 前面幾篇都是介紹靜態影像的辨識與分析,那這篇就來到針對影片來做處理。 Cognitive Service 針對影片辨識的部分提供了:Video Indexer 它整合了許多功能,在這邊列出一些比較重要的功能: 語系偵測 可以自動偵測出這個影片是屬於哪個語系,目前支援: English, Spanish, French, German, Italia...

Oct 19, 20181 min read
[IT 鐵人賽] Azure Data Service - Day 04 - Cognitive Service - 辨識 - Video Indexer

BrainBurst, HeadFirst

45 posts

學習學到老,撞牆撞到腦. A lifelong quest—with forehead dents.