[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 04 - Elmah - 01
![[IT 鐵人賽] ASP.NET Core 與 Log 紀錄和追蹤的愛恨交織 - Day 04 - Elmah - 01](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1776070454149%2Fa0702417-5357-4217-a572-7ba53ea36735.png&w=3840&q=75)
.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 原作者已經沒有再更新了,所以推薦使用 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

介面介紹

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

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

Download log: 可以所有的 Log 匯出成 .csv 檔案,供使用別的軟體或工具進行分析,或是提供給開發人員處理。
Host: 發生例外錯誤的主機,如果系統是同時 RUN 在多台時,就可以快速分辨是哪一台主機產生了例外。
Code: 錯誤代碼。
Type: 例外類型。
User: 已登入的使用者,若發生的例外是在使用者已經登入的情況之下,它還可以把登入的使用者名稱列出來,以供日後追蹤。
Error: 例外詳細資訊,點
Details可以看更多,甚至還有 Call Stack 以及相關變數,完全可以知道到底是哪個 Function 產生了例外

確保 Elmah 頁面安全
在上面的範例中,Elmah 是可以公開被存取的,這肯定不合資訊安全,所以 Elmah 有提供了一點點的資訊安全
修改 Elmah 介面路徑
只需要在Startup.cs 之 ConfigureServices 加入 service.AddElmah(); 時,加入相關設定即可完成

不過很可惜的,現在看起來還沒登入驗證的支援,如果有興趣的或許可以去貢獻看看
下一篇來介紹把 Log 放到不同的儲存體上,以及如何過濾 Log

![[IT 鐵人賽] Azure Data Service - Day 04 - Cognitive Service - 辨識 - Video Indexer](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1776070473207%2F6423fd4a-4041-4bb2-b918-4cfe3f9aea5e.png&w=3840&q=75)