[Tools] 使用Log2Console即時查看NLog產出訊息

使用Log2Console即時查看NLog產出訊息

前言


在系統開發初期或除錯作業時,往往會希望直接監視Log訊息以方便問題的釐清。在偵錯模式下可使用NLog的Debugger Target方式,於Visual Studio 的 Output 視窗中獲得Log資訊;若系統已上線或希望同時監看各相關系統(Web與WebAPI)互動Log訊息時,則可使用第三方工具Log2Console來進行即時Log資訊收集顯示工作。以下將針對兩種方式進行實作介紹。

 

使用 Debugger Target 於 Visual Studio Output 視窗輸出 Log 資訊


將NLog寫入目標調整為Debugger型態,即可在Visual Studio 的 Output 視窗中查看即時輸出的Log資訊。

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true">

  <!--[變數] 文字樣板 -->
  <variable name="Layout" value="${longdate} | ${level:uppercase=true} | ${logger} | ${message} ${onexception:${newline}${exception:format=tostring}}"/>

  <!--[設定] 寫入目標-->
  <targets>
    <target name="VsOutput" xsi:type="Debugger" layout="${Layout}" />
  </targets>

  <!--[設定] 紀錄規則-->
  <rules>
    <logger name="*" levels="Trace,Debug,Info,Warn,Error,Fatal" writeTo="VsOutput" />
  </rules>

</nlog>

 

Log資訊直接輸出於Visual Studio 的 Output 視窗中,但缺點就是需要在偵錯(F5)模式下才可會輸出。

image

 

 

使用 Log2Console 即時檢視 NLog 所送出之 Log 資訊


Log2Console是一個支援NLog及Log4Net的記錄檔檢視器,我們可以透過TCP/UDP的方式將Log資訊傳遞至Log2Console畫面中,輕易地收集各系統相關之Log訊息,好讓開發人員可適時地監看系統拋出之Log資訊,方便除錯進行。

 

首先請至官方網站下載 Log2Console安裝檔

image

 

安裝後直接開啟程式,點選Receivers來設定接收端資訊

image

 

點選Add後,筆者先以TCP方式傳送Log資料作為範例 (黃色區域Log2Console很貼心附上NLlog設定方式)

image

 

加入後可依實際需求調整Port

image

 

接著調整NLog.config設定如下

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true">

  <!--[設定] 寫入目標-->
  <targets>
    <target name="TcpOutlet" xsi:type="NLogViewer" address="tcp://127.0.0.1:4505"/>
  </targets>

  <!--[設定] 紀錄規則-->
  <rules>
    <logger name="*" levels="Trace,Debug,Info,Warn,Error,Fatal" writeTo="TcpOutlet" />
  </rules>

</nlog>

 

簡易測試程式碼

public class HomeController : Controller
{
    private static Logger logger = NLog.LogManager.GetCurrentClassLogger();

    public ActionResult Index()
    {
        // log here
        logger.Trace("Trace message...");
        logger.Debug("Debug message...");
        logger.Info("Info message...");
        logger.Warn("Warn message...");
        logger.Error("Error message...");
        logger.Fatal("Fatal message...");

        return View();
    }
}

 

如此就可以輕易地透過NLog.config設定將Log資訊轉入Log2Console中即時顯示。

image


希望此篇文章可以幫助到需要的人

若內容有誤或有其他建議請不吝留言給筆者喔 !