前情提要
我們撰寫程式後,追縱執行狀況或Error會使用logging完成,基本上筆者平常使用Nlog
來追縱執行狀況。基本上依照Log Level來區分是否使用文字檔案或資料庫形式來存放。最近遇到的情況是因為筆者目前在金融業就職,因有主管機關單位在管理,進而系統上線有一套標準,基本上開發單位不得接觸正式資料庫,文字檔案則需要申請後才能進入正式環境觀看,使得追縱實際問題,變得困難。這時候,曙光出現了:
官方並沒有升級到dotnet core
版本,還好強者貢獻dotnet core
版本,參考
內容
建立demo API專案
筆者就用dotnet
指令來建立API專案
1 | mkdir ElmahDemo |
安裝Nuget套件
使用Visual Studio 2019
開啟sln
檔案,接著安裝nuget
套件,筆者這邊會採用SqlServer
來當作Persistent選擇,必須安裝兩個套件,如下:
- ElmahCore
- ElmahCore.Sql
Startup中設定使用Elmah
appsettings.Development.json
中設定資料庫連線字串
1 | "ConnectionStrings": { |
建立資料表語法參考
接著開始在Startup.cs
中宣告設定及使用Elmah
1 | // ConfigureServices |
觀看結果
首先筆者這邊模擬丟出Exception
,撰寫一個DemoController
並主動丟一個Exception
出來
1 | using Microsoft.AspNetCore.Mvc; |
因為設計成get
,只要在瀏覽器上面 https://localhost:44330/api/demo/elmah ,即可產生Exception
。接著看結果,連上elmah頁面 https://localhost:44330/elmah
看到清楚的Exception敘述,解bug所向無敵了。
結論
基本上Log套件有百百種,以圖形化介面瀏覽log,就屬elmah
了。當然筆者也要在這裡埋一下伏筆,若有諸多個伺服器上運行著各式各樣的應用程式,Log蒐集是一門學問,若以者種圖形化介面的elmah
,需要看各種應用程式的log則必須得切換到不同的域名中觀看,文字Log就更不用說了,需要登入到所屬伺服器及應用程式資料夾中觀看,會發現查Log會是一個多麼麻煩的事,若能有一個集中地方觀看各式各樣應用程式的Log會是一個很好的體驗,筆者會再來寫一篇關於集中log的文章,敬請期待。
參考
https://github.com/ElmahCore/ElmahCore
https://github.com/ElmahCore/ElmahCore/issues/47
https://blog.developer.money/it-鐵人賽-asp-net-core-與-log-紀錄和追蹤的愛恨交織-day-05-elmah-02-42e9b8810419