Skip to main content

Command Palette

Search for a command to run...

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

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

.NET Core Logging- Logging in ASP.NET Core 02

上一篇已經介紹了 ASP.NET Core 內艦之 Logger 的簡單使用,那接下來就要進階一點了

來介紹一下 ASP.NET Core 內建之 Logger 如何透過設定檔來設定 Log 層級等相關組態與將 Log 輸出到不同地方


首先先來看要如何設定 Log 層級,在一般沒有任何設定也就是預設的情況下,預設 Log 層級是 Information,所以會在 Console 中顯示除了 Trace 和 Debug 以外所有的訊息,如下圖紅框顯示

如果我們想要設定只有 Warning 以上才顯示,最簡單的方式就是直接在 Program.csBuildWebHost 方法中加入 ConfigureLogging() 設定

這樣最低 Log 層級就會被設為 Warning 以上

但是如果每次要更改 Log 層級都要修改程式碼,這樣也太擾人了,所以其實它還支援其他方式進行設定,包括透過設定檔的方式,設定方式如下:

  • 檔案格式 (INI、JSON 及 XML)。
  • 命令列引數。
  • 環境變數。
  • 記憶體內部 .NET 物件。
  • 未加密的祕密管理員儲存體。
  • 類似 Azure Key Vault 的加密使用者存放區。
  • 自訂提供者 (已安裝或已建立)。

預設就已經會讀取 appsettings.json中的 Logging區段設定組態


除此之外還可以透過設定來進行 Log Filter 功能,這邊以appsettins.json為範例說明

在 Logging 區段中,分為 Debug、Console、LogLevel 三個,一一來說明

Debug 區段,Debug 在這邊代表的是輸出到 Debug Provider 中,有可能是 Debug 視窗或是 Debug 指定的容器

  • Default: 簡單來說就是會套用到未明確列出條件的所有 Log 這邊就是記錄 Information 層級以上的 Log

Console 區段,Console 在這邊代表的是輸出到 Console 中

  • IncludeScopes: 用來設定是否啟用 LogScope,若為是則會將 LogScope 中所產生的 Log 輸出出來,若否則相反;LogScope 請參考:https://bit.ly/2PUO6Ws

LogLevel 用來設定相關紀錄層級

  • Microsoft.AspNetCore.Hosting.Internal.WebHost: 當 Log 的來源之 namespace 為 Microsoft.AspNetCore.Hosting.Internal.WebHost 時,就會套用此條件 紀錄 Warning 層級以上的 Log
  • Microsoft.AspNetCore.Mvc.*: 當 Log 的來源之 namespace 為 Microsoft.AspNetCore.Mvc 底下所有的 namespace 時 (包含 Microsoft.AspNetCore.Mvc ),就會套用此條件 紀錄 Warning 層級以上的 Log
  • System.*: 當 Log 的來源之 namespace 為 System 底下所有的 namespace 時 (包含 System )
  • Default: 簡單來說就是會套用到未明確列出條件的所有 Log 這邊就是記錄 Warning 層級以上的 Log

LogLevel 區段,假設上面都不符合的話,會套用到此條件

  • Default: 簡單來說就是會套用到未明確列出條件的所有 Log 這邊就是記錄 Warning 層級以上的 Log

NOTE: 若 namespace 無 * 時,namespace 必須完全符合才會觸發規則 NOTE: 若都無指定時,預設 Log Filter 為記錄 Debug 以上所有 Log


若要修改設定所存放之地方,可以於 Program.cs 中的 CreateWebHostBuilder,加上 ConfigureLogging 相關設定,以下面為例,就是從 CustomLogging 區段中讀取 Log 設定

也可以從其他檔案中讀取相關設定


最後來介紹要如何把 Log 輸出到不同的地方

ASP.NET Core 內建以下 Provider:

  • Console
  • Debug
  • EventSource
  • EventLog
  • TraceSource (必須執行在 .NET Framework 中)
  • Azure App Service (會將 Log 輸出至診斷紀錄 (Diagnostics) 中,配合 App Service 中針對診斷紀錄的設定即可達成;例如輸出到儲存體)

也有第三方提供者,參考:https://bit.ly/2zmZpRO

使用方式其實很簡單,只要在 Program.cs 中的 CreateWebHostBuilder,加上 ConfigureLogging 相關設定


ASP.NET Core 內建 Logging 就介紹到此,下一篇將介紹使用 Elamh 來進行紀錄

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.