gpt4 book ai didi

c# - NLog 控件到现有的 RichTextBox Windows 窗体

转载 作者:太空狗 更新时间:2023-10-29 22:23:31 26 4
gpt4 key购买 nike

下面是我的 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>

谢谢。

最佳答案

我认为您可以在 NLog Codeplex 论坛上找到问题的答案,here .

如果您直接在Form1 表单中的字段声明中初始化static logger,则Form1 < em>instance 还不存在,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();
}
}

为避免不必要的重新初始化,您可能希望仅在 logger 尚未初始化时初始化它,即

    private void Form1_Load(object sender, EventArgs e)
{
if (logger == null) logger = LogManager.GetCurrentClassLogger();
}

关于c# - NLog 控件到现有的 RichTextBox Windows 窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11631959/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com