Dar*_*rio 15 serilog microsoft.extensions.logging
我正在使用 .NET 6 构建一个 API,并计划使用 Serilog 作为记录器。根据https://onloupe.com/blog/serilog-vs-mel/有两种可能性:
一方面,专门使用 Serilog 的缺点是我的代码库中的所有内容都将依赖于 Serilog,因此将其与 Microsoft.Extensions.Logging 结合使用应该提供更大的灵活性。
另一方面,在https://github.com/serilog/serilog-extensions-logging上,他们明确建议对 .NET Core 项目使用https://github.com/serilog/serilog-aspnetcore :
ASP.NET Core 应用程序应该更喜欢 Serilog.AspNetCore 和 UseSerilog()。
有谁知道这个建议的原因,它在灵活性方面看起来与我相矛盾?
bre*_*ret 14
我认为推荐:
ASP.NET Core 应用程序应该更喜欢 Serilog.AspNetCore 和 UseSerilog()。
并不是真正谈论ILogger在应用程序代码中使用哪种抽象——Microsoft 还是 Serilog。我认为更多的是在低级别 Serilog.Extensions.Logging 包或更高级别 Serilog.AspNetCore 包之间进行选择(这取决于前者)。
Serilog.AspNetCore 包引入了一些有用的功能,例如请求日志记录以及直接与通用主机集成。您可能在 ASP.NET Core 应用程序中需要的东西。Serilog.Extensions.Logging 包更适合不使用通用主机(例如控制台应用程序)的情况。
关于是否更喜欢使用 Microsoft 的ILogger抽象或 Serilog 的抽象:这取决于情况。在您希望在不同项目(或公开)之间共享的库代码中,我可能会坚持 Microsoft 的抽象以获得最大兼容性,并且不会强制对消费者产生不受欢迎的依赖。同样,如果您认为有一天您可能想要更换日志框架,那么如果您坚持使用 Microsoft API,您可能会更轻松。
另一方面,与 Microsoft 的 API 相比,您可能更喜欢 Serilog API 的人体工程学设计。例如,也许您喜欢静态Log和LogContextAPI 的便利性,而无需注入记录器的所有仪式。抽象IDiagnosticContext(以及上面提到的 ASP.NET Core 请求记录器)是一种非常强大的日志记录模式。这些都是“全力以赴”使用 Serilog 的充分理由。
| 归档时间: |
|
| 查看次数: |
9488 次 |
| 最近记录: |