【问题标题】:Which logging facades should I consider?我应该考虑哪些日志记录立面?
【发布时间】:2011-03-01 23:50:15
【问题描述】:

我正在查看一堆关于登录 .NET 的旧问题。许多帖子提到了使用日志门面在应用程序和所选日志框架之间创建松散耦合。这似乎很简单,直到我开始审查日志框架。我查看了 Common.Logging,它有一些有趣的功能,但看起来开发已经停止。我查看了 Castle Windsor,但如果我只想抽象日志接口,这似乎有点过头了。

我发现的大多数问题都比较老,所以我希望情况有所改变。对于使用“正确”的门面是否有共识?还是我应该硬着头皮直接实现日志记录?

谢谢!

【问题讨论】:

    标签: c# logging


    【解决方案1】:

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

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

    我强烈推荐使用 NLog 或 log4net。如果您不介意 XML 丛林,Enterprise Library 也有不错的日志记录块。避免使用内置的跟踪 API - 与其他 API 相比,它的使用和配置很麻烦,同时提供的灵活性很小。

    【讨论】:

    • 感谢您的建议。这是我所倾向的方向,但我很欣赏这种健全性检查。
    【解决方案2】:

    日志记录并不像人们从表面上所期望的那么琐碎,因此您自己实施它可能不是您想要采取的路径。一个大问题是,为什么需要立面?一个好的日志框架提供了许多钩子,您也可以在其中挂接您自己的自定义日志代码。

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

    【讨论】:

    • 我试图这样做是因为我认为这是最佳实践,而不是因为此时有任何特殊需要。
    【解决方案3】:

    我使用 .NET Framework 中的 Trace 类进行日志记录。简单、灵活、不费吹灰之力,它为您提供了您所描述的解耦。您也可以在代码中使用条件符号将其关闭。

    【讨论】:

      猜你喜欢
      • 2016-11-25
      • 1970-01-01
      • 2016-12-21
      • 2015-12-25
      • 2018-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多