Skip to main content

Command Palette

Search for a command to run...

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

Updated
1 min read
[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 By @barestan,到目前為止最後更新時間是 2017–12–08,希望還會繼續維護。

有一網友 Fork 了專案持續維護:https://github.com/funky81/ElmahCore,推薦可以使用此版


設定與使用

首先先從 Nuget 安裝 ElmahCore

因為 Nuget 原作者已經沒有再更新了,所以推薦使用 https://github.com/funky81/ElmahCore 自己 Build 一版出來

Package Explorer: Install-Package ElmahCore
DotNet CLI: dotnet add package ElmahCore

安裝完畢後,於 Startup.cs 分別於 ConfigureServices 中加入 service.AddElmah();Configure 中加入 app.UseElamh();

這樣就設定完成了,夠簡單吧


接下來我們就來直接測試一下,在 HomeController 中的 Index 裡,故意產生 Exception

執行後,並故意瀏覽錯誤頁面,就已經開始記錄例外了

預設的查看的介面網址為:https://{url}:{port}/elmah


介面介紹

  1. RSS Feed: 讓你可以使用 RSS 來訂閱錯誤訊息,透過 RSS Reader 來接收每一筆最新例外資訊。

  1. RSS Digest: 同樣也是提供 RSS 訂閱,但是此 RSS 所提供的資訊為每日的例外狀態統整資訊。

  1. Download log: 可以所有的 Log 匯出成 .csv 檔案,供使用別的軟體或工具進行分析,或是提供給開發人員處理。

  2. Host: 發生例外錯誤的主機,如果系統是同時 RUN 在多台時,就可以快速分辨是哪一台主機產生了例外。

  3. Code: 錯誤代碼。

  4. Type: 例外類型。

  5. User: 已登入的使用者,若發生的例外是在使用者已經登入的情況之下,它還可以把登入的使用者名稱列出來,以供日後追蹤。

  6. Error: 例外詳細資訊,點 Details 可以看更多,甚至還有 Call Stack 以及相關變數,完全可以知道到底是哪個 Function 產生了例外


確保 Elmah 頁面安全

在上面的範例中,Elmah 是可以公開被存取的,這肯定不合資訊安全,所以 Elmah 有提供了一點點的資訊安全

修改 Elmah 介面路徑 只需要在Startup.csConfigureServices 加入 service.AddElmah(); 時,加入相關設定即可完成

不過很可惜的,現在看起來還沒登入驗證的支援,如果有興趣的或許可以去貢獻看看


下一篇來介紹把 Log 放到不同的儲存體上,以及如何過濾 Log

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 鐵人賽] 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.