LogViewer: 高性能实时log查看器及NLog日志输出

LogViewer是一个通过UDP传输的高性能实时log查看器,具有多种功能和特性。它可以通过UDP读取日志,通过文件导入日志,并能导出日志到一个文件中。此外,LogViewer还支持排序、过滤(日志树、日志等级)和查找功能,并能突出显示搜索文本。它还可以忽略UDP接收日志时的IP地址列表,支持多接收器,并提供多种颜色主题。

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

将NLog日志输出到LogViewer中

如果想将NLog日志输出到LogViewer中,可以按照以下步骤进行设置:

新建wpf项目并添加nlog

首先新建一个wpf项目,采用Prism框架,项目名称为: LogToLogViewerApp

添加nlog库及nlog.config文件

添加nlog库的步骤如下:

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

nlog.config文件内容如下:

<?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>

同时需要添加以下依赖包:

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

需要在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);
}

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

在MainWindowViewModel的构造函数中注入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");
}

总结

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

热门手游下载