Common.Logging还有其他选择吗?

时间:2011-07-21 15:03:54

标签: .net logging nlog common.logging

编辑:Common.Logging 2.1.1于2012年6月9日发布,Github page相当活跃,author commenting specifically on the health of the project

我们正在考虑在新的.NET项目中使用Common.Logging,但我有点担心项目似乎变得不活跃。 homepage最后一次更新是在2009年,latest version available on SourceForge是在2010年创建的。我已经找到了incompatibility with NLog 2,我担心随着时间的推移,这可能会成为一个更大的问题。我注意到Enterprise Library 5.0没有列为兼容,但我没有尝试过。

是否有其他替代方案可提供类似的通用界面?

3 个答案:

答案 0 :(得分:16)

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

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

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

    < / LI>

    现在,回到NLog2。 NLog2中的日志API与NLog1向后兼容,但配置和定位的API已更改。因此,如果您只需要将日志消息发送到NLog2,您只需执行程序集重定向(请参阅我的答案:Can NLog v2 be used with Common.Logging)。

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

    就像@Kugel所说,不活跃可能意味着稳定和成熟。由于Common.Logging适用于各种日志框架,因此每次支持的日志框架之一发布时,都不太可能发布新版本。它可能比帮助更混乱。因此,应始终首先考虑装配重定向。只有当真正出现不兼容问题时,就像我提到的NLog2消息重定向一样,发送邮件到邮件列表,我相信有人会跳进去帮忙。

    干杯, 肯尼斯

答案 1 :(得分:1)

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

  

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

     

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

<强>更新

这是我第一次尝试NLog 2的实现,使用风险由您自己承担。欢迎任何评论:

https://gist.github.com/1107148

答案 2 :(得分:1)

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

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

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