C# 我应该考虑哪些伐木立面?

C# 我应该考虑哪些伐木立面?,c#,logging,C#,Logging,我在复习一些关于登录.NET的老问题。许多帖子提到使用日志外观在应用程序和所选日志框架之间创建松散耦合。这似乎很简单,直到我开始回顾日志框架。我研究了Common.Logging,它有一些有趣的特性,但看起来开发已经停止。我查看了Castle Windsor,但如果我只想抽象日志接口,那就太过分了 我发现的大多数问题都比较老,所以我希望情况有所改变。对于使用“正确”的外观是否有共识?还是我应该咬紧牙关直接实现日志记录 谢谢 我使用.NET Framework中的类进行日志记录。简单、灵活、无需大

我在复习一些关于登录.NET的老问题。许多帖子提到使用日志外观在应用程序和所选日志框架之间创建松散耦合。这似乎很简单,直到我开始回顾日志框架。我研究了Common.Logging,它有一些有趣的特性,但看起来开发已经停止。我查看了Castle Windsor,但如果我只想抽象日志接口,那就太过分了

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


谢谢

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

日志记录比从表面上预期的要简单,因此您可能不希望自己实现它。一个大问题是,为什么需要一个门面?一个好的日志框架提供了许多钩子,您也可以在自己的自定义日志代码中钩子这些钩子


我们使用log4net:与Gibraltar软件结合使用(因此我们从现场安装中获得报告)(商业版,我与他们无关,只是一个客户)。使用Log4NETs,可以使用许多现有的AppDead或编写自定义的AppDistabase.

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

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


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

谢谢您的建议。这是我所倾向的方向,但我很欣赏这种理智的检查。我试着做这件事是因为我认为这是最佳实践,而不是因为在这一点上有任何特殊的需要。