下面是我的NLog配置,我想在Form1中将日志加载到名为rtMessage的现有RichTextBox中,但NLog将创建一个新窗口,其中包含加载到RichTextBox中的日志消息:
<targets>
<target xsi:type="RichTextBox" name="m" layout="${longdate}|${level:uppercase=true}|${logger}|${message}"
controlName="rtMessage" formName="Form1" />
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="m" />
</rules>
Run Code Online (Sandbox Code Playgroud)
谢谢.
And*_*son 10
我认为你可以找到NLOG Codeplex上论坛回答您的问题,在这里.
如果static logger直接在Form1表单内的字段声明中初始化,则Form1 实例将不存在,NLog将继续为RichTextBox目标创建新表单.
您需要做的是logger将Form1实例初始化时的初始化延迟到一个时间,例如在Load事件处理程序中.
以下是Codeplex问题的功能代码摘录:
public partial class Form1 : Form
{
private static Logger logger;// = LogManager.GetCurrentClassLogger();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
logger = LogManager.GetCurrentClassLogger();
}
}
Run Code Online (Sandbox Code Playgroud)
为避免不必要的重新初始化,您可能只想在logger尚未初始化时进行初始化,即
private void Form1_Load(object sender, EventArgs e)
{
if (logger == null) logger = LogManager.GetCurrentClassLogger();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8251 次 |
| 最近记录: |