【问题标题】:Looking for common logging interface to create generic logging in a NuGet package寻找通用日志接口以在 NuGet 包中创建通用日志记录
【发布时间】:2020-03-14 01:07:19
【问题描述】:

我查看了 Common.Logging Nuget 包,最新版本支持 .NET Core 1。我目前正在使用 .NET Core 3。因此,我正在寻找建议,无论是使用 Common.Logging NuGet 包还是一个好主意,还是我应该探索其他替代方案。

我正在编写一个 NuGet 包,其中一个要求是它可以采用任何日志记录对象,主要是 Log4Net 或 NLog 对象,并根据它们的配置记录所有内容,这些配置将从父项目传入。

【问题讨论】:

  • 你的第二个要求听起来你需要一个叫做 Logging Facade 的东西:stackoverflow.com/questions/2733510/…
  • 为什么我不能使用Microsoft.Extensions.Loggingnuget 包?我认为它做同样的事情?

标签: c# logging .net-core log4net nlog


【解决方案1】:

我认为这很安全。 https://www.nuget.org/packages/Common.Logging.Core/3.4.1 适用于 .net 标准 1.0,似乎无需更新。

此外,根据此请求https://github.com/net-commons/common-logging/issues/148,该项目仍处于活动状态,并计划在未来提供支持。

从这个问题Are there any alternatives to Common.Logging?,似乎没有其他有效的替代方案,只能使用它,或者去自定义外观实现。

【讨论】:

  • 为什么我不能使用Microsoft.Extensions.Logging nuget 包?我认为它做同样的事情?
【解决方案2】:

我的建议是,您不要重新发明轮子,而是使用 Microsoft 带来的 Microsoft.Extensions.Logging 库从单点管理日志记录提供程序。

您已经有一些用于NLogLog4Net 的第三方连接器,它们简化了登录多个提供程序的方式,只需在启动级别注册每个提供程序。

【讨论】:

  • 谢谢 HuorSwords,我正在使用 Microsoft.Extensions.Logging,它运行良好。我认为您是该项目的所有者,我建议将 Microsoft.Extensions.Logging.Log4Net.AspNetCore 重命名为其他名称,因为它可以与 .net 、 .net 标准和 .net 核心一起使用。只是一个建议。
  • 不是那么简单。 :) 一开始,项目本身只是将 Microsoft.Extensions.Logging 系统与 ASP.NET Core 应用程序上的 log4net 连接起来......但经过一些请求,连接器已经“进化”。在 Nuget.org 上发布后无法重命名而不影响现有用户。
  • 这完全有道理。最初查看名称我不确定这是否是正确使用的包
猜你喜欢
  • 2011-04-06
  • 2023-03-11
  • 2022-12-19
  • 2010-11-29
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
  • 2014-11-09
相关资源
最近更新 更多