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端的日志输出,并可以根据需要选择显示的日志级别。有助于开发人员可以实时关注程序的运行流程。
Wpf使用NLog将日志输出到LogViewer的更多相关文章
- ASP.NET Core 2.1 : 十二.内置日志、使用Nlog将日志输出到文件
应用离不开日志,虽然现在使用VS有强大的调试功能,开发过程中不复杂的情况懒得输出日志了(想起print和echo的有木有),但在一些复杂的过程中以及应用日常运行中的日志还是非常有用. ASP.NET ...
- Asp.Net Core NLog 将日志输出到数据库以及添加LayoutRenderer的支持
在这之前打算用Apache的Log4Net,但是发现其AdoNetAppender方法已经不存在了,无法使用配置文件直接输出到数据库了,因此我便改用了NLog框架. 一.对项目添加NLog 通过Nug ...
- [转]ASP.NET Core 开发-Logging 使用NLog 写日志文件
本文转自:http://www.cnblogs.com/Leo_wl/p/5561812.html ASP.NET Core 开发-Logging 使用NLog 写日志文件. NLog 可以适用于 . ...
- ASP.NET Core 开发-Logging 使用NLog 写日志文件
ASP.NET Core 开发-Logging 使用NLog 写日志文件. NLog 可以适用于 .NET Core 和 ASP.NET Core . ASP.NET Core已经内置了日志支持,可以 ...
- ASP.NET Core 实战:使用 NLog 将日志信息记录到 MongoDB
一.前言 在项目开发中,日志系统是系统的一个重要组成模块,通过在程序中记录运行日志.错误日志,可以让我们对于系统的运行情况做到很好的掌控.同时,收集日志不仅仅可以用于诊断排查错误,由于日志同样也是大量 ...
- NET Core 实战:使用 NLog 将日志信息记录到 MongoDB
NET Core 实战:使用 NLog 将日志信息记录到 MongoDB https://www.cnblogs.com/danvic712/p/10226557.html ASP.NET Core ...
- .net core 2.0使用NLog写日志文件
原文地址:传送门 之前也看了 linezero 大佬写的教程,但是总是没有成功写入日志文件.按照 曲廉卿 的已成功,以下正文: 最近研究了一下NLog的使用方式,简单的入了一下门. 实现的功能,对于不 ...
- EF Core使用SQL调用返回其他类型的查询 ASP.NET Core 2.0 使用NLog实现日志记录 CSS 3D transforms cSharp:use Activator.CreateInstance with an Interface? SqlHelper DBHelper C# Thread.Abort方法真的让线程停止了吗? 注意!你的Thread.Abort方法真
EF Core使用SQL调用返回其他类型的查询 假设你想要 SQL 本身编写,而不使用 LINQ. 需要运行 SQL 查询中返回实体对象之外的内容. 在 EF Core 中,执行该操作的另一种方法 ...
- ELK +Nlog 分布式日志系统的搭建 For Windows
前言 我们为啥需要全文搜索 首先,我们来列举一下关系型数据库中的几种模糊查询 MySql : 一般情况下LIKE 模糊查询 SELECT * FROM `LhzxUsers` WHERE UserN ...
- NetCore2.2使用Nlog自定义日志写入路径配置方式
在一些特定场景的业务需求下,日志需要写入到不同的路径下提供日志分析.第一种:默认Nlog可以通过日志级别来区分路径,——优点是不需要额外配置,开箱即用——缺点是不够灵活,如果超过级别数量,则不满足需求 ...
随机推荐
- Langchain 与 LlamaIndex:LLM 应用开发框架的比较与使用建议
Langchain 和 Llamaindex 是两种广泛使用的主流 LLM 应用开发框架.两者有什么不同?我们该如何使用?以下我根据各类资料和相关文档做了初步选型. 一.Langchain 1. 适用 ...
- Kubernetes 存储概念之Volumes介绍
Volumes 默认情况下容器中的磁盘文件是非持久化的,对于运行在容器中的应用来说面临两个问题,第一:当容器挂掉,K8S重启它时,文件将会丢失:第二:当Pod中同时运行多个容器,容器之间需要共享文件时 ...
- emojiCTF2024
emojiCTF2024 WEB http 题目: 思路: 修改 UA 头为 EMOJI_CTF_User_Agent_v1.0:User-Agent: EMOJI_CTF_User_Agent_ ...
- SpringBoot2.7 霸王硬上弓 Logback1.3 → 不甜但解渴
开心一刻 一大早,她就发消息质问我 她:你给我老实交代,昨晚去哪鬼混了? 我:没有,就哥几个喝了点酒 她:那我给你打了那么多视频,为什么不接? 我:不太方便呀 她:我不信,和你哥们儿喝酒有啥不方便接视 ...
- 【Mybatis-Plus】使用QueryWrapper作为自定义SQL的条件参数
发现同事的自定义SQL写法是这样的 连表之后使用的条件是 ${ew.customSqlSegment} @Param声明的常量: /** * wrapper 类 */ String WRAPPER = ...
- 【MySQL】主从配置
一主一从(或二从)部署: 参考博客: https://www.cnblogs.com/lelehellow/p/9633315.html 正好借着3台机器,可以做一个 1主 2从的分配 192.168 ...
- 【MySQL】JSON相关
一些概念 MySQL里的json分为json array和json object. $表示整个json对象,在索引数据时用下标(对于json array,从0开始)或键值(对于json object, ...
- 【Java】自制查找工具
需求:查找后台代码中写的SQL是否包含拆分表,如果存在,则返回那些表名 Context.txt 粘贴我们找到的DAO层代码,因为所有方法封装的SQL都在DAO层里[就理解为筛查的字符串] Dictio ...
- vscode 设置窗口菜单栏显示字体大小
最近换了一块大些的显示屏,发现vscode的窗口字体有些小了,不是很方便,于是研究了一下如何设置vscode的窗口字体大小. 需要注意的是这里的设置是对窗口字体的而不是编辑器的字体. 1 . 通过主 ...
- Java和LWJGL的关于OpenAL的文章
一.OpenAL的原理和基本概念: 1.1 OpenAL的架构 OpenAL的架构同样基于三个核心组件:Context(上下文).Source(声源)和Buffer(缓冲区).Context代表了音频 ...