NlogPrismWPF

文章目录

  • Nlog&Prism&WPF
    • 日志模块
    • 实现原理
    • 添加配置
    • 注入服务
    • 应用测试
    • 其他模块怎么调用?

Nlog&Prism&WPF

日志模块

介绍了为WPF框架Prism注册Nlog日志服务的方法

实现原理

无论是在WPF或者ASP.NET Core当中, 都可以使用ServiceCollection来做到着一点, 因为日志框架都提供了IServiceCollection的扩展。
但是, 如果现在你使用的是Prism 8.0的应用程序, Prism提供了多种容器的支持, 例如:DryIoc或者Unity, 这个时候我们如果现在这个基础上实现依赖注入,首先我们需要修改Prism当中创建容器的默认实现, 在其中将ServiceCollection追加到容器当中。
本文的示例主要以DryIoc容器为示例:
这里会主要用到几个相关的依赖:

  • Microsoft.Extensions.DependencyInjection;
  • Microsoft.Extensions.Logging;
  • DryIoc.Microsoft.DependencyInjection;
  • NLog.Extensions.Logging;
    为此, 需要添加一些相关的包,如下所示:
    在这里插入图片描述

添加配置

Nlog.Config:
主要配置Nlog的执行配置规则
要开始配置NLog的NLog.config文件。之前的Nuget下添加Nlog.Config的方式已经呗弃用了。
官方说明如下:
此程序包不是开始使用NLog所必需的:配置文件可以手动创建
(请阅读此处的规范:https://github.com/NLog/NLog/wiki/Configuration-file)或者可以以编程方式创建配置。
(点击此处信息:https://github.com/NLog/NLog/wiki/Configuration-API)
注意:不幸的是,当使用时,此包无法正常工作建议收件人:
-手动下载:https://raw.githubusercontent.com/NLog/NLog/v4.4/src/NuGet/NLog.Config/content/NLog.config-将“复制到输出目录”设置为“如果更新则复制”
NLog.Extensions.Logging: 扩展方法, 用于注册服务
NLog.config文件内容如下

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"autoReload="true"throwExceptions="false"internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log"><targets><target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"layout="${longdate}|${event-properties:item=EventId_Id:whenEmpty=0}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}"  /></targets><rules> <logger name="*" minlevel="Debug" writeTo="f" /> </rules>
</nlog>

注入服务

public partial class App
{protected override IContainerExtension CreateContainerExtension(){var serviceCollection = new ServiceCollection();serviceCollection.AddLogging(configure =>{configure.ClearProviders();configure.SetMinimumLevel(LogLevel.Trace);configure.AddNLog();});// 要注意使用匹配Prism.DryIoc的 DryIoc.Microsoft.DependencyInjection 5.0 的版本,太高的API有变化会报错return new DryIocContainerExtension(new Container(CreateContainerRules()).WithDependencyInjectionAdapter(serviceCollection));}
}

应用测试

使用构造函数注入,并使用日志进行记录

public class LoginViewModel : BindableBase
{private readonly Logger<LoginViewModel> _logger;public LoginViewModel(Logger<LoginViewModel> logger){_logger = logger;logger.LogDebug("Test");}
}

其他模块怎么调用?

首先需要Nuget引入 Microsoft.Extensions.Logging

在这里插入图片描述用法和上面一致`

public class LoginViewModel : BindableBase
{private readonly Logger<LoginViewModel> _logger;public LoginViewModel(Logger<LoginViewModel> logger){_logger = logger;logger.LogDebug("Test");}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/176274.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c#方法中的参数

无参 //无参数直接调用即可MethodWithoutParameters();/// <summary>/// 没有参数的方法/// </summary>private void MethodWithoutParameters(){Debug.Log("没有参数的方法");}有参 //有一个参数MethodWithOneParameters("我是参数");/// <…

标签推荐Top-N列表优化算法_朱小兵

2算法模型 2&#xff0e;1 Top-N推荐列表重排序算法

LeetCode 2402.会议室III ----堆+模拟

5e5 的st与ed 容易看出来是用堆来写的一道题目&#xff0c;一开始我只用了一个堆&#xff0c;出现了问题 问题就是当我们当前这个会议有多个可以选择的会议室可以选择的时候不一定选择那个最先结束的会议室而是应该选择可以选择的那些里面编号最小的那一个&#xff0c;因此我们…

3.5 队列的表示和操作的实现

思维导图&#xff1a; 3.5.1 队列类型 3.5.1 队列的类型定义 1. 简介 队列是一种特殊的线性表&#xff0c;它的特性是只能在表的一端进行插入操作&#xff0c;而在另一端进行删除操作。通常将允许插入操作的一端称为队尾&#xff0c;允许删除操作的一端称为队头。 2. 抽象…

【案例实战】NodeJS+Vue3+MySQL实现列表查询功能

这篇文章&#xff0c;给大家带来一个列表查询的功能&#xff0c;从前端到后端的一个综合案例实战。 采用vue3作为前端开发&#xff0c;nodejs作为后端开发。 首先我们先来看一下完成的页面效果。点击分页&#xff0c;可以切换到上一页、下一页。搜索框可以进行模糊查询。 后端…

视频格式高效转换:MP4视频批量转MKV格式的方法

随着数字媒体技术的不断发展&#xff0c;视频格式转换已经成为了我们日常工作中不可或缺的一部分。不同的视频格式适用于不同的场景和设备&#xff0c;因此将视频从一种格式转换为另一种格式往往是我们必须完成的任务。在本文中&#xff0c;我们将重点介绍如何运用云炫AI智剪高…

C#中LINQtoSQL的设置与连接

目录 一、首次安装LinqToSql类 二、非首次安装LinqToSql类 1.接受原有数据库连接 2.建立新的数据库连接 3.建立本地数据库连接 LINQ&#xff08;Language-Integrated Query&#xff0c;语言集成查询&#xff09;是微软公司提供的一项新技术&#xff0c;它能够将查询功能直…

uniapp 中添加 vconsole

uniapp 中添加 vconsole 一、安装 vconsole npm i vconsole二、使用 vconsole 在项目的 main.js 文件中添加如下内容 // #ifdef H5 // 提交前需要注释 本地调试使用 import * as vconsole from "vconsole"; new vconsole() // 使用 vconsole // #endif三、成功

MySQL - 索引详解以及优化;Explain执行计划

官网文档 MySQL :: MySQL 5.7 Reference Manual :: 8.3 Optimization and Indexes Mysql优化&#xff08;出自官方文档&#xff09; - 第八篇&#xff08;索引优化系列&#xff09; 目录 Mysql优化&#xff08;出自官方文档&#xff09; - 第八篇&#xff08;索引优化系列&…

玩转硬件之Micro:bit的玩法(一)

写在前面 这么长时间以来一直在玩软件, 好像软件还没有研究明白&#xff0c;因为工作的转变&#xff0c;又开始接触到硬件&#xff0c;既然开始触碰到硬件了&#xff0c;也想记录一下。有的时候想想要不要写这段前言&#xff0c;但是不写又觉得比较突兀&#xff0c;好端端的怎…

SpringBoot整合Gateway 的Demo(附源码)

源码&#xff0c;可直接下载 Gateway模块 Gateway 的父pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:sc…

二叉树OJ题(检查两颗数是否相同、另一棵树的子树、翻转二叉树、判断平衡二叉树)

文章目录 二叉树OJ题一、 检查两颗数是否相同1.思路2.解题步骤3.代码 二、另一棵树的子树1.思路2.代码 三、翻转二叉树1.思路2.解题步骤3.代码 四、判断平衡二叉树1.思路2.代码 二叉树OJ题 一、 检查两颗数是否相同 1.思路 1.两个树&#xff0c;在保证结构相同的同时&#xff0…

iOS 使用dsym符号化线上crash日志(ips文件)

1.获取崩溃日志 可以iphone连接mac复制当时的崩溃日志。 Xcode->Window->Devices View Device Logs 如果是testflight的崩溃是可以分享的&#xff0c;分享出来可能是ips文件。 把文件名称改成my.crash 使用脚本把新版本崩溃日志转成老版本格式 这一步不是必须的&…

如何知道服务器的某个端口是否打开

注意&#xff1a;服务器的TCP端口&#xff0c;比如1886端口&#xff0c;出方向 和进方向 都打开才可以用 1、telnet 命令&#xff1a;telnet ip port&#xff0c;port即端口&#xff0c;我们一般最常见的命令就是telnet&#xff0c;但是telnet使用的是tcp协议&#xff0c;换句…

[云原生案例1.] 构建LNMP架构并运行Wordpress个人博客平台

文章目录 1. 当前需求2. 前置准备3. 搭建过程3.1 创建自定义网络3.2 部署并配置nginx3.2.1 创建工作目录并上传相关软件包3.2.2 解压缩相关软件包3.2.3 编写Dockerfile文件3.2.4 编写nginx.conf文件3.2.5 创建nginx镜像3.2.6 运行容器 3.3 部署并配置mysql3.3.1 创建工作目录3.…

在科技展厅设计中,如何通过空间规划来突出展品和主题?

数字多媒体技术在各行业内的广泛应用&#xff0c;使内容展览展示技术得到了更新&#xff0c;尤其是在科技展厅设计中&#xff0c;更是将各类多媒体互动装置的优势发挥到了极致&#xff0c;为观众提供现代化的感官体验&#xff0c;而这其中有效的空间规划对于现代化科技展厅的效…

3D模拟场景开发引擎

在3D工程模拟开发中&#xff0c;有一些专门的引擎和工具可供选择&#xff0c;以帮助您创建逼真的三维模拟和模型。以下是一些用于3D工程模拟的开发引擎和工具&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流…

最新Ubuntu20.04安装教程(图文)

总的来说&#xff0c;安装Ubantu包含以下三个步骤&#xff1a; 一、安装虚拟机 二、Ubuntu镜像下载 三、虚拟机配置 一、安装虚拟机 选择安装VMware Workstation&#xff0c;登录其官网下载安装包&#xff0c;链接如下&#xff1a; 下载 VMware Workstation Pro | CN 下载…

iOS实现弹簧放大动画

效果图 实现代码 - (void)setUpContraints {CGFloat topImageCentery (SCREEN_HEIGHT - 370 * PLUS_SCALE) / 2;[self.topIconView mas_makeConstraints:^(MASConstraintMaker *make) {make.centerX.mas_equalTo(0);make.centerY.equalTo(self.view.mas_top).with.offset(t…

面试官:聊聊kafka线上使用会有哪些问题?

哪些环节会造成消息丢失&#xff1f; 首先说说哪些环节会丢消息 消息生产者&#xff1a; &#xff08;1&#xff09;acks0&#xff1a; 表示producer不需要等待任何broker确认收到消息的回复&#xff0c;就可以继续发送下一条消息。性能最高&#xff0c;但是最容易丢消 息。大…