首页 > 解决方案 > WPF项目中的Serilog

问题描述

我正在 VS 2019 中开发 WPF .Net 项目,而不是 .Net Core。我想记录异常。我对此有一些疑问:

  1. 我可以将 Serilog 添加到那种应用程序中吗?
  2. 我需要选择安装什么 Serilog 包?在 NuGet Packager Manager 的 VS 中,我发现了一堆 Serilog 包。
  3. 那是多层架构项目。Sirelog 必须安装在哪一层?在数据层还是 UI 层?
  4. 如何设置、配置和使用 Serilog?
  5. 如何全局配置 Serilog 以捕获异常并将它们从任何形式的解决方案记录到文件或数据库?

我将不胜感激详细的解释和示例。

谢谢

标签: c#.netserilog

解决方案


我可以将 Serilog 添加到那种应用程序中吗?

我想你的意思是问“我可以将 Serilog 添加到 WPF 项目中吗?” 答案是“是”。


我需要选择安装什么 Serilog 包?在 NuGet Packager Manager 的 VS 中,我发现了一堆 Serilog 包。

阅读文档每个软件包都有特定的用途它们 相应的 自述 文件会让您知道您是否需要它们。


那是多层架构项目。Serilog 必须安装在哪一层?在数据层还是 UI 层?

“多层架构项目”不是一个描述性的术语:每个写得很好的非平凡项目都有层。

Serilog 支持不同风格的用例:

  • 在我看来和(据我所知)Serilog 维护者的意见中,最好的风格是使用serilog-extensions-logging

    • 首先,在您的应用程序中使用 DI 容器(即Microsoft.Extensions.DependencyInjection- 您可以使用其他容器,但如果您是 DI 新手,那么您应该使用Microsoft.Extensions.DependencyInjection)。
    • 然后将 NuGet 包引用添加到Microsoft.Extensions.LoggingMicrosoft.Extensions.Logging.Abstractions
    • 然后将 NuGet 包引用添加到SerilogSerilog.Extensions.Logging- 这使您可以使用 Serilog 作为Microsoft.Extensions.Logging. 您应该避免在应用程序代码中直接使用 Serilog,而是通过执行所有日志记录Microsoft.Extensions.Logging.ILogger(不要与 Serilog 混淆Serilog.ILogger!)。
    • 有关如何使用的更多详细信息,serilog-extensions-logging 请阅读他们的文档。请注意,虽然很多文档都提到了 .NET Core,但事实上您可以将它与 .NET Framework 4.7.2 项目一起使用,只要您有Microsoft.Extensions.DependencyInjectionMicrosoft.Extensions.Logging包工作。
  • 但 Serilog 还支持其全局静态Serilog.Logger.Log对象属性,该属性允许来自任何地方的任何代码记录数据。

    • 但是您应该避免使用这种方法,因为它会使您的代码更难测试。还要小心将此方法与执行同步 IO 的日志记录后端一起使用,因为高频日志记录会大大降低您的应用程序的速度。

如何设置、配置和使用 Serilog?

阅读文档!


如何全局配置 Serilog 以捕获异常并将它们从任何形式的解决方案记录到文件或数据库?

这取决于您的应用程序的项目平台。Serilog确实有 NuGet 包,可以为特定平台设置全局异常日志记录,但在我看来,你不应该只让 Serilog 为你处理这些,什么都不做。仅仅因为 Serilog 将记录未捕获的异常并不意味着您不应该自己采取行动。

也就是说,特别是在 WPF 中,您需要处理两个事件:

  • AppDomain.UnhandledException
    • 这实际上适用于所有 .NET 项目,而不仅仅是 WPF。
  • Application.DispatcherUnhandledException.
    • 这是特定于 WPF 的。这是大多数(但不是全部)在 WPF 触发的事件处理程序(以及模型绑定?)中抛出的未捕获异常将被捕获的地方。

请注意,WPF 有很多关于非致命错误和警告的运行时报告(例如 View-Model Binding 的问题,根据您的应用程序的设计,这可能会或可能不会异常),在这种情况下,您需要实现TraceListener并记录任何对 Serilog 自己来说值得注意的东西


推荐阅读