您现在的位置是:网站首页> 编程资料编程资料
为WPF框架Prism注册Nlog日志服务_实用技巧_
2023-05-24
685人已围观
简介 为WPF框架Prism注册Nlog日志服务_实用技巧_
无论是Nlog还是Serilog, 它们都提供了如何快速在各类应用程序当中的快速使用方法。
尽管,你现在无论是在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.Extensions.Logging: 扩展方法, 用于注册服务
在App.xaml.cs代码,如下所示:
protected override IContainerExtension CreateContainerExtension() { var serviceCollection = new ServiceCollection(); serviceCollection.AddLogging(configure => { configure.ClearProviders(); configure.SetMinimumLevel(LogLevel.Trace); configure.AddNLog(); }); return new DryIocContainerExtension(new Container(CreateContainerRules()) .WithDependencyInjectionAdapter(serviceCollection)); }窗口中,添加测试代码:
public partial class MainWindow : Window { private readonly Logger logger; public MainWindow(Logger logger) { InitializeComponent(); this.logger = logger; } private void Button_Click(object sender, RoutedEventArgs e) { logger.LogDebug("Hello"); } } 注意: 配置Nlog需要修改Nlog.Config配置文件生效,可参考Github文档, 下面为测试配置:
最终输出内容,如下所示:
2021-08-19 16:32:00.5558|0|DEBUG|wpflogapp.MainWindow|Hello 2021-08-19 16:32:00.7049|0|DEBUG|wpflogapp.MainWindow|Hello 2021-08-19 16:32:00.8828|0|DEBUG|wpflogapp.MainWindow|Hello 2021-08-19 16:32:01.0647|0|DEBUG|wpflogapp.MainWindow|Hello 2021-08-19 16:32:01.2608|0|DEBUG|wpflogapp.MainWindow|Hello
完整App.xaml.cs文件代码如下:
public partial class App : PrismApplication { protected override Window CreateShell() { return Container.Resolve(); } protected override void RegisterTypes(IContainerRegistry containerRegistry) { } protected override IContainerExtension CreateContainerExtension() { var serviceCollection = new ServiceCollection(); serviceCollection.AddLogging(configure => { configure.ClearProviders(); configure.SetMinimumLevel(LogLevel.Trace); configure.AddNLog(); }); return new DryIocContainerExtension(new Container(CreateContainerRules()) .WithDependencyInjectionAdapter(serviceCollection)); } } 到此这篇关于为WPF框架Prism注册Nlog日志服务的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。
您可能感兴趣的文章:
相关内容
- .NET Core使用Worker Service创建服务_实用技巧_
- .NET 6新特性试用Timer类之PeriodicTimer _ASP.NET_
- asp.core 同时兼容JWT身份验证和Cookies 身份验证两种模式(示例详解)_实用技巧_
- ASP.Net Core MVC基础系列之环境设置_基础应用_
- ASP.Net Core MVC基础系列之中间件_基础应用_
- ASP.Net Core MVC基础系列之服务注册和管道_基础应用_
- ASP.Net Core MVC基础系列之获取配置信息_基础应用_
- ASP.Net Core MVC基础系列之项目创建_基础应用_
- ASP.net(C#)实现简易聊天室功能_实用技巧_
- 一次.net core异步线程设置超时时间的实战记录_实用技巧_
