log4net与Nlog

任何人都有经验? 他们如何相互堆叠?

我们正计划使用其中一个login企业应用程序。

参考文献:

log4net的

n日志

编辑:我们没有现有的依赖nlog或log4net。

我最近的任务是为即将开展的项目“为原型做一个原型”。 我没有任何日志框架的经验。 我在Log4Net,NLog和Enterprise Library上进行了几天的研究,完成了教程,制作了玩具应用程序等等。 3-4周后回来,并把它们放在一个有凝聚力的演示。 希望这对你有用。

我对我们的项目的build议是这样的:

  1. 使用logging外观(例如Common.Logging , SimpleLoggingFacade )来避免直接的依赖关系。
  2. 如果我们最终将Enterprise Library用于其他设施,那么也可以将其用于Logging。
  3. 如果我们最终使用Log4Net上的依赖,使用Log4Net。
  4. 如果以上都不是,请使用NLog。 我更喜欢哪个

这是基于这些发现(意见!):

  • 所有3个框架都有能力,可以做一些复杂的事情。 我们想要一个高质量的解决scheme,但坦率地说,不需要超高性能或60种types的事件接收器。
  • 所有3个都有非常相似的基本概念。
  • 每个都有它自己的很酷的技巧,如真正的高级路由,或dynamic日志文件名,截断文件等
  • 所有3个都以自己的方式很好地logging。
  • 对于像我这样的一个完整的新手来说,最初他们都有些尴尬。 基本没有太大的差别。 我克服了。
  • 几周后重新审视时,NLog 显然是最容易恢复的。 我需要一点点刷上去。 随着Log4Net,我不得不重新访问一些在线示例。 有了EntLib,我放弃了从头开始重新编写教程 – 我完全迷失了。
  • 我无法弄清楚如何让EntLib做一些事情,如login到数据库。 这可能很容易,但是超出了我的时间限制。
  • Log4Net和NLog具有很小的内部代码封装。 EntLib是垃圾邮件,但我仍然使用它的正面。
  • 我不小心错误地configuration了EntLib,它在运行时告诉我。 Log4Net没有。 我没有与NLog的意外错误configuration。
  • EntLib带有一个漂亮的app.config编辑器,你100%的需要。 NLog有一个configuration文件模式,所以你得到“智能感知”。 Log4Net自带nada。

所以显然我喜欢NLog迄今。 虽然还有其他解决scheme,但还是不够用。

没有太多讨论的一个关键的考虑是支持和更新。

自从1.2.10版发布于2006年4月19日以来,Log4Net尚未更新

相比之下,NLog自2006年以来一直积极支持即将发布的NLog 2.0,支持log4net上次更新时不存在的许多平台,例如:

  • NET Framework 2.0 SP1及更高版本,3.5和4.0(客户端和扩展configuration文件)
  • Silverlight 2.0,3.0,4.0
  • .NET Compact Framework 2.0,3.5
  • 单声道2.xconfiguration文件

在最近有两个框架的经验,我想我可以分享我对每个框架的看法。

我被要求评估一个现有的Web应用程序的日志框架,经过各种在线论坛后,我select了NLog(v2.0)和log4net(v1.2.11)。 这是我的发现:

  1. 使用NLog进行设置/启动非常简单。 您在网站上阅读入门教程,即可完成。 你得到一个公平的想法,如何可能与nlog。 configuration文件非常直观,任何人都可以理解configuration。 例如:如果要设置内部日志logging,则在Nlogconfiguration文件的标头节点中设置标志,这是您希望的位置。 在log4net中,您在web.config的appSettings部分中设置了不同的标志。

  2. 在log4net中,内部日志logging不输出令人讨厌的时间戳。 在Nlog中,你会得到一个带有时间戳的好logging。 我发现它在我的评估中非常有用。

  3. 在log4netfilter – 你最好检查我的这个问题 – log4netfilter – 如何写和filter忽略日志消息 ,如果你find一个答案/解决scheme,请让我知道。 我明白,这个问题有一个解决方法,因为你可以编写自己的自定义filter。 但是在log4net中不容易获得的东西。

  4. 性能 – 我使用存储过程将3000条日志消息logging到数据库。 我使用了简单的for循环(int i = 0; i <3000; i ++ …来logging相同的消息3000次,对于写入:log4net AdoAppender花费的时间几乎是NLog的两倍。

  5. Log4net不支持asynchronousappender。

我selectNLog作为日志框架就足够了。 🙂

对于任何人来说,这个线程迟到了,你可能要回头看看.Net基类库(BCL)。 引入TraceSource类(大约在2005年)时,许多人错过了.net 1.1和.Net 2.0之间的变化。

使用TraceSource与其他日志框架是一致的,对日志logging的细粒度控制,app.config / web.config中的configuration以及编程式访问 – 无需企业应用程序块的开销。

  • .Net BCL团队博客:追踪介绍 – 第一部分 (同样参见第二部分a,b,c)

还有一些比较:“log4net vs TraceSource”

对我们来说,关键的区别在于整体performance…

看看在NLog和Log4Net中的Logger.IsDebugEnabled ,从我们的testing中,NLog的开销较less,这就是我们之后(低延迟的东西)。

干杯,弗洛里安

首先看看你的堆栈的其余部分。

如果你使用NHibernate,它直接使用Log4Net。 其他框架可能有其他特定的logging器,他们需要。

除此之外:两者都很好。

我已经决定了Log4Net自己。 configuration起来可能很痛苦,如果configuration不正确,弄清楚出了什么问题是很痛苦的。 但是,你可以使它几乎任何你想要从一个logging器。

如果你在Log4Net上没有问题,那么这里有一篇关于如何开始使用它的文章: http : //elegantcode.com/2007/12/07/getting-started-with-log4net/

那么..我用数据库日志任务的企业库,现在我切换到NLog由于性能瓶颈。

一些比较信息:

http://pauliusraila.blogspot.com/2010/10/solving-database-logging-bottlenecks.html

我回应以上,并喜欢nLog。 Entlib是不必要的臃肿。

回复:Log4net有一件事总是让我与log4net忘记将以下内容添加到global.asax来初始化组件:

 log4net.Config.XmlConfigurator.Configure(); 

如果你到这里,你可以find一个全面的matrix,包括NLog和Log4Net库以及企业库和其他产品。

有人可能会争辩说matrix是以强调matrix中唯一商业库的特征的方式来完成的。 我认为这是真实的,但无论如何,推动我与NLog的select是有用的。

问候

正如我注意到的,log4net在应用程序运行的整个过程中locking它们的输出文件,所以你不能删除它们。 否则他们是相似的。

所以我更喜欢NLog。

我运行的一个开源项目的无耻插件,但给了关于哪个.NET日志框架更活跃的热烈讨论,我想我会发布一个强制性的链接到Serilog 。

为了在应用程序中使用,Serilog类似于(并且大量使用)log4net。 但是,与其他.NET日志logging选项不同的是,Serilog关于保存日志事件的结构以供离线分析。 当你写:

 Log.Information("The answer is {Answer}", 42); 

大多数日志库立即将消息呈现为string。 Serilog也可以这样做,但它保留了{ Answer: 42 }属性,以便以后使用其中一个NoSQL数据存储区时,可以根据Answer的值正确查询事件。

我们接近于1.0,支持所有现代(.NET 4.5,Windows Store和Windows Phone 8)平台。

我第二个NLog也是因为它也可以处理非托pipe代码。 我想可能会一起使用log4net和log4cxx,但NLog处理开箱即用的托pipe代码和非托pipe代码。

我也看了Common.Logging ,一个抽象日志api的外观,它支持log4net,NLog和Entreprise Library。 我不认为我会使用它,但我喜欢他们如何使用lambdas来提高日志logging被禁用时的性能(与NLog和其他人共享的function)。

您也可以考虑Microsoft企业库日志logging块 。 它配有漂亮的devise师。

我认为普遍的一致意见是nlogconfiguration和使用起来更容易。 虽然两者都很有能力。

根据我的经验, SmartInspect击败了NLog和log4net。

它非常易于使用,文档很好,您可以使用交互式日志查看器查看和过滤之前logging的消息 ,这是一个巨大的现实世界优势。

我喜欢的一件事是数据的选项卡视图,就像Chrome中的浏览器选项卡一样。 每个选项卡可以提供日志的不同过滤视图。