将 NLog 与 WPF 富文本框一起使用

Using NLog with WPF richtextbox

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

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

RichTextBox

我已经从 NuGet 导入了 WpfRichTextBox 扩展,并将这段代码放在主窗口 class 的加载事件中

    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.

你也可以使用我的wpf control。 (https://github.com/dojo90/NLogViewer)。还有一个 nuget 包可用。