首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

Wpf使用NLog将日志输出到LogViewer

编程知识
2024年09月21日 13:21

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端的日志输出,并可以根据需要选择显示的日志级别。有助于开发人员可以实时关注程序的运行流程。

From:https://www.cnblogs.com/sesametech-dotnet/p/18423977
本文地址: http://shuzixingkong.net/article/2181
0评论
提交 加载更多评论
其他文章 一,初始 MyBatis-Plus
一,初始 MyBatis-Plus @目录一,初始 MyBatis-Plus1. MyBatis-Plus 的概述2. 入门配置第一个 MyBatis-Plus 案例3. 补充说明:3.1 通用 Mapper 接口介绍3.1.1 Mapper 接口的 “增删改查”3.1.1.1 查询所有记录3.1.
一,初始 MyBatis-Plus 一,初始 MyBatis-Plus 一,初始 MyBatis-Plus
代码整洁之道--读书笔记(14)
代码整洁之道 简介: 本书是编程大师“Bob 大叔”40余年编程生涯的心得体会的总结,讲解要成为真正专业的程序员需要具备什么样的态度,需要遵循什么样的原则,需要采取什么样的行动。作者以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来者引路,助其职业生涯迈上更高台阶。 本书适合所有程序员阅读,
代码整洁之道--读书笔记(14) 代码整洁之道--读书笔记(14)
Nuxt Kit中的 Nitro 处理程序
title: Nuxt Kit中的 Nitro 处理程序 date: 2024/9/21 updated: 2024/9/21 author: cmdragon excerpt: 摘要:本文详细介绍了在Nuxt 3框架中使用Nitro服务器引擎的实践,包括创建处理程序处理HTTP请求、路由和中间件的
Nuxt Kit中的 Nitro 处理程序 Nuxt Kit中的 Nitro 处理程序
socket close和shutdown的区别,TIME_WAIT和CLOSE_WAIT
TCP主动关闭连接&#160;appl: close(), --&gt; FIN FIN_WAIT_1 //主动关闭socket方,调用close关闭socket,发FIN &lt;-- ACK FIN_WAIT_2 //对方操作系统的TCP层,给ACK响应。然后给FIN &lt;-- FIN --
以太坊Rollup方案之 arbitrum(2)
这篇博客主要介绍了Arbitrum验证节点的架构及其工作原理,重点讨论了验证节点的功能、AVM(Arbitrum虚拟机)的状态机结构、操作码及数据结构的细节,并深入解释了交互式证明的分割协议和单步证明的实现机制。通过图示,作者详细说明了验证节点如何通过二分协议来证明某个区块的正确性,并在必要时提交单
以太坊Rollup方案之 arbitrum(2) 以太坊Rollup方案之 arbitrum(2) 以太坊Rollup方案之 arbitrum(2)
Python 潮流周刊#70:微软 Excel 中的 Python 正式发布!(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进 Python 技术,并增长职业和副业的收入。 分享了 12 篇文章,12 个开源项目,2 则音视频,全文 2000 字。 以下是
Python 潮流周刊#70:微软 Excel 中的 Python 正式发布!(摘要)
BFS 颜色填涂———洛谷p1162
填涂颜色 题目描述 由数字 \(0\) 组成的方阵中,有一任意形状的由数字 \(1\) 构成的闭合圈。现要求把闭合圈内的所有空间都填写成 \(2\)。例如:\(6\times 6\) 的方阵(\(n=6\)),涂色前和涂色后的方阵如下: 如果从某个 \(0\) 出发,只向上下左右 \(4\) 个方向
适用于 VitePress 的公告插件开发实记
开发了一个适用于 VitePress 站点的公告插件 vitepress-plugin-announcement
适用于 VitePress 的公告插件开发实记 适用于 VitePress 的公告插件开发实记 适用于 VitePress 的公告插件开发实记