ASP.NET Core的内置日志记录是否使NLog/Serilog/etc过时?

gro*_*kky 12 c# nlog serilog asp.net-core-mvc asp.net-core

我们使用NLog或Serilog进行记录.我们正忙着将一个系统从ASP.NET移植到ASP.NET Core,后者内置了日志记录.

理想情况下,我们想放弃NLog,因为似乎不再需要它.

但是,内置日志记录是否等同于NLog?它缺少任何主要功能吗?继续使用NLog(或类似Serilog之类的东西)有什么意义吗?

Jul*_*ian 10

ASP.NET日志记录是一种常见的(日志记录)接口和日志实现.

您可以将基本接口和第三方库(例如NLog)一起使用,因为基础架构已为此做好准备.

如果您通过内置日志记录实现获取NLog,您将获胜:

  • 即时更改配置(在不重启的情况下运行应用程序)
  • 更多目标(例如数据库,文件).内置文件中没有文件目标:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging.NLog中的邮件目标尚未在.NET Standard中,但它已经计划好了.邮件目标适用于.NET Standard 2,而.NET Standard 1则适用于NLog.MailKit
  • 目标中的更多选项(例如文件归档)
  • 写出额外的上下文信息,比如 ${processid}
  • 因为我们在性能优化方面投入了大量资金,所以我期待性能.
  • 异步日志记录 - 据我所知,这不是在ASP.NET日志记录中.
  • 高级功能,如缓冲,回退和限制日志,使用上下文信息过滤条件,并发写入一个文件等.
  • NLog更容易扩展(不仅是目标,还有布局渲染器,布局等)
  • 结构测井的可能性(Serilog,NLog 4.5)

但与往常一样,如果您不需要这些功能,那么可能更少(库)更多.


And*_*ius 7

我不会说ASP.NET Core的日志记录API会使NLog和其他提供程序过时.ASP.NET Core提供的是一个很好的抽象,因此可以在不更改依赖于日志记录的代码的情况下切换日志框架.

Nlog仍提供有用的配置功能,这些功能未在ASP.NET Core日志API中实现.