[.net MVC C#] Nlog Elmah 大合體實作筆記

之前有做過一次Nlog Elmah 大合體也有做筆記但是檔案不知道丟那去了

所以就再做一次好了...

 

先做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、targetlogger 

  <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