0

リッチ テキスト ボックス (LogView) を含む winform があり、そのテキスト ボックスにログを記録するように構成が設定されています。別のフォームから LogView を開くと、最初はすべてがうまく機能するようにログを記録し始めます。LogView を再度開いて 2 回目の実行を試みると、リッチ テキスト ボックスに何も表示されません。

発信者コード

    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");
    }

LogView コード

    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 回目は機能しません。

バージョン 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>
4

1 に答える 1