Enterprise Logging Block vs NLog vs log4net

时间:2011-02-11 16:19:41

标签: c# log4net enterprise-library nlog

我需要在项目中使用日志库,并考虑在Enterprise Logging Block与NLog vs log4net之间。我在比较中找到了一些链接,但大多数都很老,并抱怨像没有新版本的log4net这样的东西等等。

根据当前数据,任何人都建议哪一个在易用性,易配置性,性能,可扩展性等方面更好。

5 个答案:

答案 0 :(得分:18)

我刚评估了log4net和NLog在更大项目中的使用情况。两者都具有类似的界面,并且具有高度可配置性。

NLog似乎得到了更好的维护:log4net与.Net4的不兼容性在log4net中仍然未解决了很长时间。 Nlog附带了一些更多的“铃声和口哨声”,如NuGet包和用于Visual Studio的Xml Schema,用于编辑配置文件。

最后我们决定使用log4net,因为我们测量了log4net更好的性能:一个简单的测试,将10000条日志消息写入文件和网络日志查看器(Log2Console),显示出log4net性能提高了十倍!我们没有在配置文件中进行调整,文件和notwork logger使用了最小配置。您应该使用项目的典型日志记录设置自行验证。

答案 1 :(得分:10)

我个人喜欢log4net。它快速,稳定且可配置(使用自定义appender等扩展非常容易)。

我没有被新版本的缺乏所困扰 - 在我看来它只是证明代码库是稳定的并且包含它应该具有的功能。毕竟,我希望我的日志记录最稳定。

这是一个slightly similar question,也许你也可以使用那里的一些答案。

答案 2 :(得分:6)

如果您使用 Common.Logging ,您可以推迟决定“使用哪个记录器”。这是一个日志包装器,您可以在其中配置日志记录应该转到log4net,nlog,System.Diagnostics.Debug。我不知道企业日志记录块,我不知道是否有用于常见日志记录的“企业日志记录块”插件。

答案 3 :(得分:4)

另一个经常被忽视的区别是NLog是BSD而log4net是Apache许可。 ELB是MS-PL(微软的开源版本)。在大多数情况下,这可能无关紧要,只是说。

答案 4 :(得分:2)

我发现他们都非常相似和能干。自从我使用Enterprise Library Logging Block以来已经有好几年了,但即便如此,它还是不错的。 NLog& log4net都很稳固。

选择一个而不是另一个的一个原因可能是第三方库集成。例如,如果您使用的是NHibernate或Quartz或其他使用log4net的库,它可能会驱动您的选择。