我有一个带有多个选项卡的应用程序。我正在尝试使用NLog添加日志记录,其中将输出定向到Richtextbox。

我的主要形式是类MyNamespace.MainWindow的实例,其名称为MainWindow1。它有一个选项卡,在该选项卡中,我有一个名为RichTextBoxrtbLogBox

我已经从WpfRichTextBox导入了NuGet扩展名,并将这段代码放入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.ReconfigExistingLoggers()应该可以解决问题。

Documentation is here.

10-08 19:15