C# 将NLog与WPF richtextbox一起使用

C# 将NLog与WPF richtextbox一起使用,c#,wpf,nlog,C#,Wpf,Nlog,我有一个应用程序,它有几个选项卡。我正在尝试使用NLog添加日志记录,其中输出被定向到richtextbox 我的主窗体是类MyNamespace.MainWindow的一个实例,它的名称是MainWindow1。它有一个选项卡,在该选项卡中我有一个名为rtbLogBox 我已经从NuGet导入了WpfRichTextBox扩展,并将这段代码放在MainWindow类的loaded事件中 private void Window_Loaded(object sender, RoutedEv

我有一个应用程序,它有几个选项卡。我正在尝试使用NLog添加日志记录,其中输出被定向到richtextbox

我的主窗体是类
MyNamespace.MainWindow
的一个实例,它的名称是
MainWindow1
。它有一个选项卡,在该选项卡中我有一个名为
rtbLogBox

我已经从
NuGet
导入了
WpfRichTextBox
扩展,并将这段代码放在MainWindow类的loaded事件中

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        if(logger == null) logger = LogManager.GetCurrentClassLogger();

        WpfRichTextBoxTarget rtbTarget = new WpfRichTextBoxTarget
        {
            Name = "rtbLog",
            ControlName = "rtbLogBox",
            FormName = "MainWindow"
        };

        LogManager.Configuration.AddTarget(rtbTarget);


        LogManager.Configuration.AddRule(LogLevel.Info, LogLevel.Fatal, rtbTarget.Name);

        logger.Info("This");
    }
问题是,这不会在RichTextBox控件中产生任何输出


除此之外,我还有一个文件输出,该目标在我运行应用程序时获取日志。

由于日志记录程序是在您更改LogManager配置之前创建的,因此您需要将更改通知日志记录程序

调用
LogManager.reconfigeExistingLoggers()
应该可以做到这一点


您也可以使用我的
wpf控件
。(). 还有一个nuget软件包可用


谢谢,但这并没有解决我的问题。这确实有效,但输出是白色的,所以我看不见。有没有办法把它放在NLog.Config中呢?可能应该放在NLog.Config中,尽管我现在还不能确定,因为我现在不能测试它。尝试将其设置为类似WinForms one see文档的方式。该接口看起来很相似,只需将xsi:type指定为WpfRichTextBox,并填写与示例中相同的属性。由于它将在创建记录器之前加载,因此不需要调用Reconfig方法。如果您有任何问题,请单独提问。