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

Does ASP.NET Core's built-in logging make NLog/Serilog/etc obsolete?

我们使用 NLog 或 Serilog 进行日志记录。我们正忙于将系统从 ASP.NET 移植到 ASP.NET 核心,has logging built in

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

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

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

Nlog 仍然提供有用的 configuration features,但未在 ASP.NET 核心日志记录 API.

中实现

ASP.NETlogging是一个通用的(logging)接口和日志实现。

您可以同时使用公共接口和第 3 方库(例如 NLog),因为基础设施已为此做好准备。

如果您让 NLog 接管内置的日志记录实现,您将获胜:

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

但一如既往,如果您不需要这些功能,那么(库)可能越少越好。