将 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()
应该可以解决问题。
你也可以使用我的wpf control
。 (https://github.com/dojo90/NLogViewer)。还有一个 nuget 包可用。
我有一个有多个选项卡的应用程序。我正在尝试使用 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()
应该可以解决问题。
你也可以使用我的wpf control
。 (https://github.com/dojo90/NLogViewer)。还有一个 nuget 包可用。