我有一个带有富文本框(LogView)的winform,我的配置设置为登录到该文本框。当我从另一个表单打开 LogView 时,第一次开始记录一切都很好。当我再次尝试打开 LogView 进行第二次运行时,富文本框中没有显示任何内容。
来电代码
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>