【发布时间】:2011-02-11 16:19:41
【问题描述】:
我需要在我的项目中使用日志库,并在 Enterprise Logging Block、NLog 和 log4net 之间进行考虑。我在比较中找到了一些链接,但其中大多数都非常旧,并且抱怨诸如长期没有新版本的 log4net 之类的东西。
根据当前数据,任何人都对哪一个在易用性、易于配置、性能、可扩展性等方面更好提出建议。
【问题讨论】:
标签: c# log4net enterprise-library nlog
我需要在我的项目中使用日志库,并在 Enterprise Logging Block、NLog 和 log4net 之间进行考虑。我在比较中找到了一些链接,但其中大多数都非常旧,并且抱怨诸如长期没有新版本的 log4net 之类的东西。
根据当前数据,任何人都对哪一个在易用性、易于配置、性能、可扩展性等方面更好提出建议。
【问题讨论】:
标签: c# log4net enterprise-library nlog
我刚刚评估了 log4net 和 NLog 在更大项目中的使用情况。两者都有相似的界面并且是高度可配置的。
NLog 似乎得到了更好的维护:log4net 与 .Net4 的不兼容问题在 log4net 中很长一段时间都没有得到解决。 Nlog 带有更多的“花里胡哨”,例如 NuGet 包和用于 Visual Studio 的 Xml 架构,用于编辑配置文件。
最后我们决定使用 log4net,因为我们测量了 log4net 更好的性能:一个简单的测试,将 10000 条日志消息写入文件和网络日志查看器 (Log2Console),显示 log4net 的性能提高了十倍!我们没有在配置文件中进行调整,文件和 notwork 记录器以最小配置使用。您应该使用项目的典型日志记录设置自己验证这一点。
【讨论】:
我个人喜欢 log4net。它快速、稳定且可配置(使用自定义 appender 等非常容易扩展)。
我不会因为缺少新版本而烦恼 - 在我看来,这只是证明代码库是稳定的并且包含应有的功能。毕竟,我希望我的日志记录首先是稳定的。
这里是slightly similar question,也许你也可以使用那里的一些答案。
【讨论】:
如果您正在使用 Common.Logging,您可以推迟决定“使用哪个记录器”。这是一个日志包装器,您可以在其中配置日志是否应该转到 log4net、nlog、System.Diagnostics.Debug。我不知道 Enterprise Logging Block,也不知道是否有用于常见日志记录的“Enterprise Logging Block”插件。
【讨论】:
另一个经常被忽视的区别是 NLog 是 BSD 而 log4net 是在 Apache 许可下。 ELB 是 MS-PL(微软的开源版本)。在大多数情况下,这可能无关紧要,只是说说而已。
【讨论】:
我发现他们都非常相似和有能力。我使用 Enterprise Library Logging Block 已经有好几年了,但即使在那时它也很不错。 NLog 和 log4net 都是可靠的。
选择其中一个的一个原因可能是第 3 方库集成。例如,如果您使用 NHibernate 或 Quartz 或其他使用 log4net 的库,它可能会推动您的选择。
【讨论】: