21

编辑:Common.Logging 2.1.1 于 2012 年 6 月 9 日发布,Github 页面相当活跃,作者特别评论了项目的健康状况

我们正在考虑在一个新的 .NET 项目中使用Common.Logging,但我有点担心该项目似乎已变得不活动。主页最后一次更新是在 2009 年,SourceForge 上的最新版本是在 2010 年创建的。我已经发现与 NLog 2 不兼容,我担心随着时间的推移这可能会成为一个更大的问题。我注意到 Enterprise Library 5.0 没有被列为兼容但我没有尝试过。

是否有任何其他替代方案可以提供类似的通用接口?

4

3 回答 3

17

我已经使用 Common.Logging 四年了,我可以将它与 NLog2 一起使用。要彻底回答您的问题,我们需要先仔细查看 Common.Logging。Common.Logging 为您带来两个好处:

  1. 从 1.x 开始,Common.Logging 允许您编写独立于日志框架的应用程序。因此,您可以轻松地从一个日志记录框架更改为另一个,甚至无需重新编译您的应用程序。这对于开发通用库特别有用,可以由使用不同日志框架的各种应用程序使用。

  2. 从 2.x 开始,Common.Logging 允许您聚合来自各种日志框架的日志信息。假设我们正在开发一个应用程序并且想要利用两个第 3 部分库,比如 A3rd.dll 和 B3rd.dll。A3rd.dll 使用 log4net,但 B3rd.dll 使用 NLog。现在如何将 A3rd.dll 和 B3rd.dll 的日志信息整合到一个日志文件(或日志监控系统)中?Common.Logging 可以提供帮助,例如,它可以从 NLog 捕获日志消息并将其发送到 log4net,然后让 log4net 将其写入日志文件或将其发送到 log4net 可以执行的任何位置。

现在,回到 NLog2。NLog2 中的日志记录 API 向后兼容 NLog1,但配置和目标的 API 发生了变化。因此,如果您只需要将日志消息发送到 NLog2,您可以简单地进行程序集重定向(请参阅我的答案:Can NLog v2 与 Common.Logging 一起使用)。

话虽如此,如果您想使用 Common.Logging 将 NLog2 消息聚合到其他日志框架,则程序集重定向方法将不起作用。必须创建一个 NLog2 特定的适配器。

就像@Kugel 所说,不活跃可能意味着稳定和成熟。由于 Common.Logging 与各种日志框架一起工作,因此不太可能在每次受支持的日志框架发布时发布新版本。否则,它可能比帮助更混乱。因此,应始终首先考虑程序集重定向。只有当确实出现不兼容问题时,就像我提到的 NLog2 消息重定向,发送电子邮件到邮件列表,我相信有人会介入并提供帮助。

干杯,肯尼斯

于 2011-07-29T17:37:54.327 回答
1

如果我想使用不受支持的库(例如 NLog2),看起来一种选择是实现自定义FactoryAdapter. 我不确定这会有多困难,但它可能是一个选择:

如果你想插入一个新的但不受支持的日志库,你需要提供一个实现 Common.Logging.ILoggerFactoryAdapter 接口的记录器工厂适配器。记录器必须实现 Common.Logging.ILog 接口。

来源: http: //netcommon.sourceforge.net/docs/2.0.0/reference/html/ch01.html#logging-advanced-customfactoryaadapter

更新:

这是我第一次尝试实现 NLog 2,使用风险自负。欢迎任何意见:

https://gist.github.com/1107148

于 2011-07-21T15:20:52.830 回答
1

看起来bclcontrib-abstract项目的这个区域发生了一些事情:

http://code.google.com/p/bclcontrib-abstract/source/browse/Contoso.Abstract.NLog/Abstract/NLogServiceLog.cs

尝试过BclContrib-Abstract.NLog 0.1.5NuGet 包后,我不喜欢它位于 Contoso 命名空间 ( Contoso.Abstract.NLog) 下的方式。

于 2011-07-21T15:48:02.660 回答