首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用带或不带Microsoft.Extensions.Logging的Serilog是更好的吗?

使用带或不带Microsoft.Extensions.Logging的Serilog是更好的吗?
EN

Stack Overflow用户
提问于 2022-01-25 10:25:29
回答 1查看 2.4K关注 0票数 9

我正在使用.NET 6构建一个API,并计划使用Serilog作为记录器。根据https://onloupe.com/blog/serilog-vs-mel/,有两种可能性:

  • 专门使用Serilog
  • 使用Microsoft.Extensions.Logging作为日志记录API + Serilog作为日志记录框架

一方面,只使用Serilog有一个缺点,就是我的代码库中的所有内容都需要依赖Serilog,所以结合使用它和Microsoft.Extensions.Logging应该提供更多的灵活性。

另一方面,在https://github.com/serilog/serilog-extensions-logging上,他们显然建议将https://github.com/serilog/serilog-aspnetcore用于.NET核心项目:

ASP.NET核心应用程序应该更喜欢Serilog.AspNetCore和UseSerilog()。

有人知道提出这项建议的理由吗?我觉得这个建议在灵活性方面是矛盾的?

EN

回答 1

Stack Overflow用户

发布于 2022-05-28 08:39:17

我认为建议:

ASP.NET核心应用程序应该更喜欢Serilog.AspNetCore和UseSerilog()。

并不是说在应用程序代码中使用哪种ILogger抽象--微软或塞利罗格。我认为更多的是选择低级别Serilog.Extensions.Logging包还是更高级别的Serilog.AspNetCore包(这取决于前者)。

Serilog.AspNetCore包引入了一些有用的特性,如请求日志记录和直接与通用主机集成。在ASP.NET核心应用程序中您可能想要的东西。Serilog.Extensions.Logging包更适合于不使用通用主机(例如控制台应用程序)的场景。

关于是更喜欢使用微软的ILogger抽象还是使用Serilog的:这取决于。在您期望跨不同项目(或公开)共享的库代码中,为了实现最大的兼容性,我可能会坚持使用Microsoft的抽象,而不是强迫不受欢迎的依赖消费者。类似地,如果您认为有可能有一天您想要交换日志框架,那么如果您坚持使用Microsoft,您可能会过得更轻松。

另一方面,您可能更喜欢Serilog API的人机工程学,而不是微软的API,例如,您可能喜欢静态LogLogContext API的方便性,而不需要所有注入记录器的仪式。IDiagnosticContext抽象(以及上面提到的ASP.NET核心请求记录器)是一种非常强大的日志记录模式。这些都是与塞里罗格“全身心投入”的好理由。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70847039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档