我应该考虑哪些伐木外墙?

时间:2011-03-01 23:50:16

标签: c# logging

我正在审查一些关于登录.NET的旧问题。许多帖子提到使用日志记录外观在应用程序和所选日志框架之间创建松散耦合。这看起来很简单,直到我开始审查日志框架。我查看了Common.Logging,它有一些有趣的功能,但看起来开发已停止。我看着温莎城堡,但如果我只是想抽象一下日志界面,这似乎有些过分了。

我发现的大多数问题都比较老,所以我希望景观有所改变。关于“正确”的立面使用是否有共识?或者我应该直接咬紧牙关并直接实施日志记录?

谢谢!

3 个答案:

答案 0 :(得分:7)

如果您正在开发一个将由其他人使用的库,并且您不希望强制执行特定的日志记录实现,则应该只考虑使用日志记录外观。我曾经使用过Commons.Logging在过去没有问题这个目的,虽然你注意到开发似乎已经停止了。它不支持我的选择记录器(NLog 2.x),我不得不从源代码编译它以使其工作(它已经有一段时间所以不记得我是否必须编写任何代码,但我可以看看,如果你“有兴趣了。”

那就是说,你最好直接使用记录器。您可以访问完整的API而不是一些常见的(最低分母)子集,并避免一层间接以及额外的库依赖。

我强烈建议使用NLog或log4net。如果你不介意XML丛林,企业库也有一个不错的日志块。避免使用内置跟踪API - 使用和配置起来很麻烦,与其他API相比,提供的灵活性很小。

答案 1 :(得分:2)

记录不像人们对表面的期望那么简单,因此自己实现它可能不是你想要采取的路径。一个很大的问题是,为什么需要立面?一个好的日志记录框架提供了许多钩子,您也可以将自己的自定义日志记录代码挂钩。

我们将log4net:http://logging.apache.org/log4net/与Gibraltar Software结合使用(因此我们从实时安装中获取报告)http://www.gibraltarsoftware.com(商业,我不隶属于他们,只是客户)。使用log4net,您可以使用许多现有的appender或编写自定义的appender。

答案 2 :(得分:0)

我使用.NET Framework中的Trace类进行日志记录。简单,灵活,没有大惊小怪,它为您提供了您正在描述的解耦。您也可以使用代码中的条件符号将其关闭。

相关问题