<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
無論是Nlog還是Serilog, 它們都提供瞭如何快速在各類應用程式當中的快速使用方法。
儘管,你現在無論是在WPF或者ASP.NET Core當中, 都可以使用ServiceCollection來做到著一點, 因為紀錄檔框架都提供了IServiceCollection的擴充套件。
但是, 如果現在你使用的是Prism 8.0的應用程式, Prism提供了多種容器的支援, 例如:DryIoc或者Unity, 這個時候我們如果現在這個基礎上實現依賴注入,首先我們需要修改Prism當中建立容器的預設實現, 在其中將ServiceCollection追加到容器當中。
本文的範例主要以DryIoc容器為範例:
這裡會主要用到幾個相關的依賴:
為此, 需要新增一些相關的包,如下所示:
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<MainWindow> logger; public MainWindow(Logger<MainWindow> logger) { InitializeComponent(); this.logger = logger; } private void Button_Click(object sender, RoutedEventArgs e) { logger.LogDebug("Hello"); } }
注意: 設定Nlog需要修改Nlog.Config組態檔生效,可參考Github檔案, 下面為測試設定:
<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:tempnlog-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>
最終輸出內容,如下所示:
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<MainWindow>(); } 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紀錄檔服務的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45