2011-03-01 63 views
3

我在回顾一堆关于.NET日志记录的老问题。一些帖子提到使用日志外观来创建应用程序和所选日志框架之间的松散耦合。这似乎很直接,直到我开始审查日志框架。我看着Common.Logging,它有一些有趣的功能,但看起来开发已经停止。我看着温莎城堡,但如果我只是想抽象日志界面,那似乎有点矫枉过正。我应该考虑哪些测井外墙?

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

谢谢!

回答

7

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

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

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

+0

感谢您的建议。这是我倾向的方向,但我很欣赏理智检查。 – Jacob 2011-03-03 18:35:02

0

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

2

测井不如人们所期望的那么简单,所以自己实施测井可能不是您想要采取的路径。一个大问题是,为什么需要一个门面?一个好的日志框架提供了许多钩子,你可以在其中自定义日志代码。

我们使用log4net:http://logging.apache.org/log4net/结合直布罗陀软件(所以我们从现场安装得到的报告)http://www.gibraltarsoftware.com(商业,我不隶属于他们,只是一个客户)。使用log4net,您可以使用许多现有的appender或编写自定义appender。

+0

我试图将其作为我认为是最佳实践的事情来做,而不是因为此时有任何特殊需要。 – Jacob 2011-03-03 18:35:50

相关问题