NLog 有支援很多不同的 targets,在 NLog 的首頁上有列出一些比較常用到的,
… and many more
其中比較常用到的應該是 Files, Database 以及 Email,不過 NLog 能夠支援的 targets 的清單如下:
http://nlog-project.org/wiki/Targets
而這些 NLog 所記錄的 Log 在我們 Debug 時還要去另外開啟資料庫工具或是開啟檔案、收信等,才能夠看到 Log 內容,
有時候在 Visual Studio 進入偵錯模式的時候,不會想再分神去開啟別的工具來看這些 Log 檔案,
而會希望能夠把一些不需要記錄到 Log 資料庫的訊息給顯示在某個地方,讓我們執行到某些地方就可以看到記錄,
有一些寫 ASP.NET 的朋友最常用的方式就是 …… ResponseWrite() 與 Javascript 的 Alert() ……
但這不是一個好的方式。
其實呢 …… 我們可以把 Log 訊息輸出到 Visual Studio 的 Output,
例如說,我們可以用程式指令去輸出程式中的一些要觀察的值,變數名稱或是物件的欄位值內容等,
MSDN - Debug.WriteLine 方法
HOW TO: Visual C# .NET 中的 Trace 和 Debug 類別
下圖就是在 Output 視窗中輸出 debug 訊息內容的情形,
但如果沒有把 Log 訊息給顯示到 Output 視窗,而 Log 訊息是會輸出到「即時運算視窗」的話,就必須做下的修改設定,
Visual Studio 2010 > 工具 > 選項
在「Debugger」選項的「一般」設定中,把「將所有輸出視窗文字重新導向到即時運算視窗」這個項目給取修勾選
如此一來就可以正常在 Visual Studio 的 Output 視窗中輸出 debug 訊息內容。
NLog - Debugger target
Writes log messages to the attached managed debugger.
除了使用 System.Diagnostics 的 Debug.Write() 或 Debug.WriteLine() 方法之外,
如果專案有加入使用 NLog 的話,其實也可以使用 NLog 來讓這些 Debug 或是 Trace 訊息給顯示到 Output 視窗中,
接下來就介紹如何透過 NLog 將 Log 訊息顯示到 Output 視窗。
首先要在 NLog.Config 中的 targets section 增加一個別為 Debugger 的 target,
接著就是在 rules 中增加 logging rule,適合輸出到 Output 視窗的 Log Level 為 Trace, Debug,
所以我們可以將 logging rule 設定如下:
再來就是在程式裡去使用,例如……
然後當我們在 Visual Studio 進入偵錯模式之後,在 Output 視窗就可以看到 log 訊息內容了,
這樣的訊息內容看起來是有點陽春,所以我們可以做些調整。
targets
分成兩個,這是因為有些訊息的資料依據 Log Level : Trace, Debug 的不同而使用不同的 target,
rules
logging rule 也拆分成兩個,分別使用不同的 target
輸出的 Log 訊息內容就會有點變化,而且也比較容易清楚閱讀訊息內容。
就是這樣,介紹使用 NLog 於進入偵錯模式時,可以把 Trace, Debug 的 Log 訊息顯示到 Visual Studio 的 Output 視窗,
這樣的作法並不會影響到頁面的顯示,所以無需在系統上線時要去修改程式,
而且透過 NLog,可以自己定義要顯示輸出的內容以及格式,讓我們在觀看 Output 視窗的 Log 訊息時可以清楚閱讀。
相關連結:
以上
沒有留言:
張貼留言