2012年12月31日 星期一

NLog RichTextBox Target

NLog RichTextBox Target

將Log訊息寫到RichTextBox控制項
如果有現成的就指定控制項名稱,但需注意要在表單建立之後再取得Logger
例如在表單建構式之後,或是在Form_Load事件之後
不然還是會獨立建出一個RichTextBox出來

static Logger log;

private void Form1_Load(object sender, EventArgs e)
{
    // 需在Form_Load才取得Logger
    log = LogManager.GetCurrentClassLogger();
}

屬性

完整資料請參考官網的RichTextBox Target文件
  • name - Target的名稱
  • layout - 輸出的格式
  • autoScroll - 是否自動捲動最下方
  • maxLines - 最大行數,超過會往上移動,移除最上方記錄
  • controlName - 控制項名稱
  • formName - 表單名稱
  • useDefaultRowColoringRules - Log文字是否使用預設的顏色
非同步,自動捲動,最大20行,使用預設色系的設定檔
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <!-- 
  See http://nlog-project.org/wiki/Configuration_file 
  for information on customizing logging rules and outputs.
   -->
    <targets async="true">
        <target xsi:type="RichTextBox" name="f" 
                autoScroll="true"
                maxLines="20" 
                formName="Form1" 
                controlName="richTextBox1"
                useDefaultRowColoringRules="true"
                layout="${longdate} ${uppercase:${level}} ${message}"  />
    </targets>
    <rules>
        <logger name="*" minlevel="Trace" writeTo="f" />
    </rules>
</nlog>