LogViewer: 高性能实时log查看器及NLog日志输出
2024-09-22 10:14:49 作者:佚名 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端的日志输出,并可以根据需要选择显示的日志级别。这有助于开发人员实时关注程序的运行流程。