火星上的海豚 · 属性访问器_属性访问器定义顺序错误-CSDN博客· 1 月前 · |
活泼的海龟 · delphi record 数组 初始化 ...· 3 月前 · |
旅途中的鼠标垫 · 时间是一种错觉?牛顿、爱因斯坦都已解释过,世 ...· 5 月前 · |
爱看书的竹笋 · std::thread throw an ...· 5 月前 · |
坚强的打火机 · picturebox控件边框-掘金· 11 月前 · |
我正在使用.NET 6构建一个API,并计划使用Serilog作为记录器。根据 https://onloupe.com/blog/serilog-vs-mel/ ,有两种可能性:
一方面,只使用Serilog有一个缺点,就是我的代码库中的所有内容都需要依赖Serilog,所以结合使用它和Microsoft.Extensions.Logging应该提供更多的灵活性。
另一方面,在 https://github.com/serilog/serilog-extensions-logging 上,他们显然建议将 https://github.com/serilog/serilog-aspnetcore 用于.NET核心项目:
ASP.NET核心应用程序应该更喜欢Serilog.AspNetCore和UseSerilog()。
有人知道提出这项建议的理由吗?我觉得这个建议在灵活性方面是矛盾的?
发布于 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,例如,您可能喜欢静态
Log
和
LogContext
API的方便性,而不需要所有注入记录器的仪式。
IDiagnosticContext
抽象(以及上面提到的ASP.NET核心请求记录器)是一种非常强大的日志记录模式。这些都是与塞里罗格“全身心投入”的好理由。
https://stackoverflow.com/questions/70847039
复制相似问题
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
火星上的海豚 · 属性访问器_属性访问器定义顺序错误-CSDN博客 1 月前 |
爱看书的竹笋 · std::thread throw an exception, main thread can't make dmp · Issue #4246 · microsoft/STL · GitHub 5 月前 |
坚强的打火机 · picturebox控件边框-掘金 11 月前 |