網頁

2012年6月20日 星期三

NLog 輸出記錄資訊到 Visual Studio Output 視窗

 

NLog 有支援很多不同的 targets,在 NLog 的首頁上有列出一些比較常用到的,

  • Files – single file or multiple, with automatic file naming and archival
  • Event Loglocal or remote
  • Database – store your logs in databases supported by .NET
  • Network – using TCP, UDP, SOAP, MSMQ protocols
  • Command-line console – including color coding of messages
  • E-mail – you can receive emails whenever application errors occur
  • ASP.NET trace

    … and many more

    其中比較常用到的應該是 Files, Database 以及 Email,不過 NLog 能夠支援的 targets 的清單如下:

    http://nlog-project.org/wiki/Targets

    image

     

    而這些 NLog 所記錄的 Log 在我們 Debug 時還要去另外開啟資料庫工具或是開啟檔案、收信等,才能夠看到 Log 內容,

    有時候在 Visual Studio 進入偵錯模式的時候,不會想再分神去開啟別的工具來看這些 Log 檔案,

    而會希望能夠把一些不需要記錄到 Log 資料庫的訊息給顯示在某個地方,讓我們執行到某些地方就可以看到記錄,

    有一些寫 ASP.NET 的朋友最常用的方式就是 …… ResponseWrite() 與 Javascript 的 Alert() ……

    但這不是一個好的方式。

     


    其實呢 …… 我們可以把 Log 訊息輸出到 Visual Studio 的 Output,

    例如說,我們可以用程式指令去輸出程式中的一些要觀察的值,變數名稱或是物件的欄位值內容等,

    image

    MSDN - Debug.WriteLine 方法

    HOW TO: Visual C# .NET 中的 Trace 和 Debug 類別

     

    下圖就是在 Output 視窗中輸出 debug 訊息內容的情形,

    image

     

    但如果沒有把 Log 訊息給顯示到 Output 視窗,而 Log 訊息是會輸出到「即時運算視窗」的話,就必須做下的修改設定,

    Visual Studio 2010  > 工具 > 選項

    image

    在「Debugger」選項的「一般」設定中,把「將所有輸出視窗文字重新導向到即時運算視窗」這個項目給取修勾選

    image

    如此一來就可以正常在 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,

    image

    接著就是在 rules 中增加 logging rule,適合輸出到 Output 視窗的 Log Level 為 Trace, Debug,

    所以我們可以將 logging rule 設定如下:

    image

     

    再來就是在程式裡去使用,例如……

    image

    然後當我們在 Visual Studio 進入偵錯模式之後,在 Output 視窗就可以看到 log 訊息內容了,

    image

    這樣的訊息內容看起來是有點陽春,所以我們可以做些調整。

  •  

    targets

    分成兩個,這是因為有些訊息的資料依據 Log Level : Trace, Debug 的不同而使用不同的 target,

    image

     

    rules

    logging rule 也拆分成兩個,分別使用不同的 target

    image

     

    輸出的 Log 訊息內容就會有點變化,而且也比較容易清楚閱讀訊息內容。

    image

     


    就是這樣,介紹使用 NLog 於進入偵錯模式時,可以把 Trace, Debug 的 Log 訊息顯示到 Visual Studio 的 Output 視窗,

    這樣的作法並不會影響到頁面的顯示,所以無需在系統上線時要去修改程式,

    而且透過 NLog,可以自己定義要顯示輸出的內容以及格式,讓我們在觀看 Output 視窗的 Log 訊息時可以清楚閱讀。

     

    相關連結:

    NLog - Targets

    NLog - Layout Renderers

     

    以上

    沒有留言:

    張貼留言