WPF Prism 8如何注册Logging

Nuget包 基础包 Microsoft Logging Abstractions Microsoft Extensions DependencyInjection 可选日志包 可以按实际需求进行选择,如NLog等,我们这里采用的是 Serilog 这个Nuget包Serilog Extensions Logging 根据日志输出的目标不同,可以选择不同的扩展方法包 目标 包名 说明 文件 Serilog.Sinks.File WiteTo可以使用File方法详细说明 命令行 Serilog.Sinks.Console 调试输出 Serilog.Sinks.Debug WiteTo可以使用Debug方法 其他扩展,请搜索 点击 日志容器注册 我们使用的是 DryIoc 进行注册,需要安装Nuget包 DryIoc.Microsoft.DependencyInjection 具体代码如下: protected override IContainerExtension CreateContainerExtension() { var serviceCollection = new ServiceCollection(); serviceCollection.AddLogging(loggingBuilder => loggingBuilder.AddSerilog(dispose: true)); return new DryIocContainerExtension(new Container(CreateContainerRules()) .WithDependencyInjectionAdapter(serviceCollection)); } 如果是Unity 则需要安装包 Unity.Microsoft.DependencyInjection 具体代码如下: protected override IContainerExtension CreateContainerExtension() { var serviceCollection = new ServiceCollection(); serviceCollection.AddLogging(loggingBuilder => loggingBuilder.AddSerilog(dispose: true)); var container = new UnityContainer(); container.BuildServiceProvider(serviceCollection); return new UnityContainerExtension(container); } 我们对于不同的日志插件框架都是在 AddLogging这个地方进行添加的,需要注意的是我们不仅需要在ServiceCollection 中注册,还需要在容器对象中注册。注意区分 DryIoc中的WithDependencyInjectionAdapter 与Unity中的BuildServiceProvider使用差异。 ...

2022-03-08 · 1 分钟 · czyt