Wpf使用NLog将日志输出到LogViewer

1 LogViewer

LogViewer是通过UDP传输的高性能实时log查看器。

具有一下特性:

  • 通过UDP读取日志
  • 通过文件导入日志
  • 导出日志到一个文件中
  • 排序、过滤(日志树,日志等级)和查找
  • 突出显示搜索文本
  • 从UPD接收日志时忽略IP地址列表
  • 多接收器支持
  • 多种颜色主题

项目地址:https://github.com/Styort/LogViewer

2 将NLog日志输出到LogViewer中

2.1 新建wpf项目并添加nlog

wpf项目采用Prism框架,项目名称:LogToLogViewerApp

2.2 添加nlog库及nlog.config文件

nlog库

<PackageReference Include="NLog" Version="5.3.4" />
<PackageReference Include="NLog.Extensions.Logging" Version="5.3.13" />

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      autoReload="true"
      throwExceptions="true"
      internalLogFile="c:\temp\console-example-internal.log"
      internalLogLevel="Info">
	<targets async="true">
		<target name="log4view" xsi:type="NLogVIewer" address="udp://127.0.0.1:7071"/>
	</targets>
	<rules>
		<logger name="*" minlevel="Trace" writeTo="log4view"></logger>
	</rules>
</nlog>

将nlog.config文件设置成如果较新则复制。

需要的其他依赖包:

<PackageReference Include="CommunityToolkit.Mvvm" Version="8.3.2" />
<PackageReference Include="DryIoc.Microsoft.DependencyInjection" Version="8.0.0-preview-02" />
2.3 在app.xaml.cs文件中依赖注入功能

重写CreateContainerExtension方法如下:

protected override IContainerExtension CreateContainerExtension()
{
    var services = new ServiceCollection();
    services.AddLogging(builder =>
    {
        builder.ClearProviders();
        builder.SetMinimumLevel(LogLevel.Debug);
        builder.AddNLog();
    });
    var container = new DryIoc.Container(CreateContainerRules());
    var x = container.WithDependencyInjectionAdapter(services);

    return new DryIocContainerExtension(x.Container);
    //return base.CreateContainerExtension();
}

2.4 在mainwindowviewmodel中使用注入ilogger接口并输出日志

在构造函数中注入ilogger,添加一个Log方法用于日志的输出

public MainWindowViewModel(ILogger<MainWindowViewModel> logger)
{
    _logger = logger;
}

[RelayCommand]
private void Log()
{
    _logger.LogTrace("Log Trace");
    _logger.LogDebug("Log Debug");
    _logger.LogInformation("Log Information");
    _logger.LogWarning("Log Warning");
    _logger.LogError("Log Error");
    _logger.LogCritical("Log Critical");
}

3 总结

使用LogViewer可以接收多个app端的日志输出,并可以根据需要选择显示的日志级别。有助于开发人员可以实时关注程序的运行流程。

相关推荐
狮歌~资深攻城狮9 小时前
未来已来:HBase的新功能与发展趋势展望
大数据·wpf·hbase
界面开发小八哥1 天前
界面控件DevExpress WPF v24.2新版亮点:支持.NET 9
.net·wpf·界面控件·devexpress·ui开发·用户界面
九鼎科技-Leo2 天前
WPF快速创建DeepSeek本地自己的客户端-基础思路版本
wpf
MasterNeverDown3 天前
WPF 中为 Grid 设置背景图片全解析
大数据·hadoop·wpf
苏克贝塔3 天前
WPF8-常用控件
wpf
积跬步---行千里3 天前
记录一次WPF程序进程挂起问题
mongodb·wpf
蒋劲豪4 天前
WPF的Prism框架的使用
wpf·prism
de之梦-御风4 天前
【流程图】在 .NET (WPF 或 WinForms) 中实现流程图中的连线算法
.net·wpf·流程图
界面开发小八哥4 天前
DevExpress WPF中文教程:Grid - 如何创建未绑定列?
wpf·界面控件·devexpress·ui开发·.net9
Maybe_ch5 天前
WPF-数据转换器
开发语言·c#·.net·wpf