2013-04-09 57 views
0

我有一个带有Rich Text框的WinForm(LogView),我的配置设置为记录到该文本框。当我从另一个窗体打开LogView时,第一次开始记录一切都很棒。当我尝试再次打开LogView时,再次运行时,Rich Text框中没有显示任何内容。NLog只在RichTextBox中显示第一次

主叫代码

private void button1_Click(object sender, EventArgs e) 
    { 
     LogView frm = new LogView(); 
     frm.Show(this); 
     NLog.Logger logger = NLog.LogManager.GetLogger(""); 
     logger.Info("FORM 2 LOG"); 
    } 

日志查看代码

private void LogView_Load(object sender, EventArgs e) 
    { 
     try 
     { 
      var logger = LogManager.GetLogger(""); 
     } 
     catch (Exception exception) 
     { 
      Console.WriteLine(exception); 
     }   //logger.Debug("test"); 
     backgroundWorker1.RunWorkerAsync(); 
    } 

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 
    { 
     BackgroundWorker worker = sender as BackgroundWorker; 

     for (int i = 1; (i <= 100); i++) 
     { 
      // Perform a time consuming operation and report progress. 
      System.Threading.Thread.Sleep(500); 
      var logger = LogManager.GetLogger(""); 
      logger.Debug("i = " + i.ToString()); 
     } 
    } 

有趣的是,这种方法做它甚至内置NLOG形式不工作的第二次。

我使用的版本2.0.1.0 .NET 4.5

配置

<nlog autoReload="true"> 
<targets> 
    <target name="richTextBox" 
      type="RichTextBox" 
      controlName="richTextBox1" 
      formName="LogView" 
      useDefaultRowColoringRules="false" 
      layout="${date} ${level} ${logger} ${message}"/> 
</targets> 
<rules> 
    <logger name="*" minlevel="Trace" writeTo="richTextBox"/> 
</rules> 
</nlog> 
+0

你能张贴配置? – Xharze 2013-04-10 12:46:04

+0

更新了配置 – Steven 2013-04-10 12:49:27

回答

0

这是由NLOG发现RichTextBox的方式引起的。
第一次加载配置时(第一次需要Logger),RichTextBox目标被初始化,这意味着RichTextBox已定位并且目标设置存储在缓存中。这意味着该表单在第二次加载时会出错。

这与在https://github.com/NLog/NLog/issues/133中描述的问题有关。

UPDATE: 你应该能够通过调用来清除缓存:

LogManager.Configuration.ReconfigExistingLoggers(); 

但是请记住,这是一个昂贵的操作

+0

那么如何刷新缓存? – Steven 2013-04-12 11:22:44

+0

你应该可以使用LogManager.Configuration.ReconfigExistingLoggers() – Xharze 2013-04-12 12:48:04

+0

我曾试过这个,但它没有工作,也许我没有在正确的时间做它?在展示表格之前,你会建议我怎么做? – Steven 2013-04-13 14:11:51