先做Elmah的部分
Step1. 到NuGet安裝Elmah及用到的3個套件
elmah.corelibrary、Elmah.MVC、elmah.sqlserver
(下圖右側打勾的項目)
Step2. 裝好Elmah的3個套件後會看到一個SQL檔(Elmah.SqlServer.sql)
建立一個DB然後執行它(Elmah.SqlServer.sql)把Table建起來
Step3. 在專案的web.config檔中找到安裝Elmah套件時所產生的項目(elmah-sqlserver),然後填入connectionString
Step4. 一樣在web.config檔中找到errorLog並在這個tag中加入一個屬性applicationName="你想填入的名稱"
補充:這個步驟原本沒做,結果測試的時候發現DB中有寫入NLog的錯誤資料但是頁面上卻沒有顯示...
Step5. 如果設定成對外連的到怕別人猜到路徑可以根據喜好修改名稱,不過要改3個項目都要改
Step6. 寫一段會出錯的程式來測試一下結果
public ActionResult Index()
{
string a = null;
string b = a.ToString();
return View();
}
Step7. 執行該頁面後到DB查看是否有紀錄
Step8. 接著開啟Elmah的紀錄頁
(網址: [你的Domain]/[你在Step5修改的名稱].axd)
接著做NLog的部分
Step a. 到NuGet安裝NLog相關套件
(NLog、NLog.config、NLog.Elmah、NLog.Schema)
Step b. 開啟NLog.Config加入extensions、target及logger
<extensions>
<add assembly="NLog.Elmah"/>
</extensions>
<target xsi:type="Elmah" name="elmah" layout="${longdate} ${uppercase:${level}} ${message}" LogLevelAsType="true"/>
<logger name="*" minlevel="Trace" writeTo="elmah" />
結果如下圖
Step c. 到Controller中加入測試的Code後建置然後開啟頁面
public ActionResult Index()
{
Logger _logger = LogManager.GetCurrentClassLogger();
_logger.Fatal("TEST-Fatal");
_logger.Error("TEST-Error");
//string a = null;
//string b = a.ToString();
return View();
}
Step d. 到DB及Elmah的紀錄頁中看結果
完成了!
範例檔:
https://bitbucket.org/yu_allen/nlogelmahexercise/src