请问有没有人对当前数据而言哪个更易于使用、配置、性能更好、可扩展性更强等方面有建议?
我刚刚评估了log4net和NLog,以便在一个大项目中使用。两者都具有类似的界面,并且高度可配置。
NLog似乎维护得更好:log4net与.Net4不兼容问题在log4net中一直没有解决。 Nlog带有更多的“花里胡哨”功能,如NuGet软件包和用于编辑配置文件的Visual Studio Xml架构。
最终我们决定使用log4net,因为我们测量到log4net的性能要好得多:对一个简单的测试,将10000条日志消息写入文件和网络日志查看器(Log2Console)中,log4net的性能表现是NLog的十倍!我们在配置文件中没有进行任何调整,文件和网络记录器是使用最小配置的。您应该使用项目的典型日志设置来验证这一点。
我个人喜欢log4net。它快速、稳定,而且可以进行配置(还可以很容易地通过自定义 appender 进行扩展)。
我并不在意缺少新版本发布 - 在我看来,这只是证明代码库很稳定,并包含了应该有的功能。毕竟,我最想要的就是 logging 稳定。
这里有一个 类似的问题,也许你可以从那里使用一些答案。
如果您使用Common.Logging,则可以推迟决定“使用哪个记录器”的时间。这是一个记录器包装器,您可以配置记录是否应该进入log4net、nlog或System.Diagnostics.Debug。我不知道企业级日志块(Enterprise Logging Block),也不知道是否有适用于Common Logging的“企业级日志块”插件。
经常被忽视的另一个区别是NLog采用BSD
许可证,而log4net则采用Apache
许可证。ELB属于MS-PL(微软的开源版本)。在大多数情况下这可能并不重要,只是提一下。
我发现它们都非常相似且功能强大。虽然我已经好几年没有使用企业库日志块了,但即使在当时,它也还不错。NLog和log4net都很稳定。
选择一个而不是另一个的原因可能是第三方库的集成。例如,如果您正在使用NHibernate或Quartz或其他利用log4net的库,这可能会影响您的选择。