代码之家  ›  专栏  ›  技术社区  ›  Greg Dean

log4net与Nlog

  •  356
  • Greg Dean  · 技术社区  · 15 年前

    有人有这两方面的经验吗?它们是如何相互竞争的?

    我们计划使用其中一个来登录企业应用程序。

    log4net

    nlog

    15 回复  |  直到 15 年前
        1
  •  383
  •   Pat    11 年前

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

    我对我们项目的建议是:

    1. 使用伐木立面(例如。 Common.Logging SimpleLoggingFacade )以避免直接依赖。
    2. 如果我们最终将企业库用于其他设施,那么也可以将其用于日志记录。
    3. 如果我们最终使用依赖于Log4Net的东西,那么就使用Log4Net。

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

    • 三者的基本概念非常相似。
    • 这三种方法都有很好的记录。
    • 对于我这样的新手来说,一开始他们都有点尴尬。在基本问题上没有明显的区别。我克服了。
    • 几周后,当我们重温往事时,NLog 清晰地 最容易恢复的。我不需要多加修饰。在Log4Net中,我不得不重新访问一些在线示例才能开始工作。有了EntLib,我放弃了,从头开始重新做教程——我完全迷路了。
    • Log4Net和NLog的代码占用空间较小。EntLib是垃圾信息,但无论如何我还是会在上面加个门面。
    • 我不小心错误地配置了EntLib,它在运行时告诉了我。Log4Net没有。我没有在NLog上出现意外的错误配置。
    • EntLib有一个漂亮的外观应用程序配置编辑,你100%需要。NLog有一个配置文件模式,因此您可以获得“intellisense”。Log4Net附带nada。

    很明显,到目前为止我喜欢NLog。尽管有另一种解决方案,但还不足以使用它。

        2
  •  158
  •   Jay Cincotta    14 年前

    Log4Net hasn't been updated since version 1.2.10 was published April 19, 2006 .

    相比之下,NLog已经得到了积极的支持,2006年即将发布 NLog 2.0 supporting many platforms that didn't exist when log4net was last updated 例如:

    • Silverlight 2.0、3.0、4.0
    • 单声道2.x配置文件
        3
  •  97
  •   Community c0D3l0g1c    7 年前

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

    我被要求评估一个现有的web应用程序的日志框架,在浏览了各种在线论坛之后,我把选择范围缩小到NLog(v2.0)和log4net(v1.2.11)。以下是我的发现:

    1. 使用NLog设置/启动非常简单。你浏览了他们网站上的入门教程,你就完成了。你知道nlog会怎么样。配置文件非常直观,任何人都可以理解配置文件。例如:如果要设置内部登录,可以在Nlog config file的header节点中设置标志,这是您期望的位置。在log4net中,可以在web.config文件的appSettings部分。

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

    3. log4net中的过滤器-你最好检查一下我的这个问题- log4net filter - how to write AND filter to ignore log messages 如果你能找到答案/解决办法,请告诉我。 我知道,有一个解决这个问题的方法,因为您可以编写自己的自定义过滤器。但是有些东西在log4net中是不容易得到的。

    4. Performance-我使用一个存储过程将大约3000条日志消息记录到数据库中。我使用simple for循环(inti=0;I<3000;I++。。。将同一条消息记录3000次。写:log4net adopapper花费的时间几乎是NLog的两倍。

    对于我来说,选择NLog作为日志框架已经足够了。:)

        4
  •  36
  •   Jeremy    14 年前

    对于任何晚到这个线程的人,您可能需要回顾一下.Net基类库(BCL)。当 气管源 课程介绍(大约在2005年)。

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

        5
  •  34
  •   Brian Mains    12 年前

    对我们来说,关键的区别在于整体性能。。。

    Logger.IsDebugEnabled 在NLog和Log4Net中,从我们的测试来看,NLog的开销更小,这就是我们所追求的(低延迟的东西)。

    干杯,

        6
  •  25
  •   Ray Hayes    15 年前

    其他框架可能有他们需要的其他特定的记录器。

    除此之外:两者都很好。

    如果您对Log4Net没有长期的问题,下面是我写的一篇关于如何开始使用它的文章: http://elegantcode.com/2007/12/07/getting-started-with-log4net/

        7
  •  16
  •   Joe    14 年前

    好。。我使用企业库执行数据库日志记录任务

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

        8
  •  14
  •   Francis Shanahan    14 年前

    我同意上面的说法,我更喜欢nLog。Entlib是不必要的膨胀。

    关于:Log4net一件事总是让我对Log4net很感兴趣,就是忘了在全局.asax初始化组件:

    log4net.Config.XmlConfigurator.Configure();
    
        9
  •  13
  •   Lorenzo OnoSendai    14 年前

    如果你走了 here 您可以找到一个包括NLog和Log4Net库以及企业库和其他产品的综合矩阵。

    当做

        10
  •  9
  •   Vitaliy Ulantikov Peter Miehle    15 年前

    正如我所注意到的,log4net在应用程序运行的整个过程中都会锁定它们的输出文件,因此您不能删除它们。否则它们是相似的。

    所以我更喜欢NLog。

        11
  •  9
  •   Nicholas Blumhardt    11 年前

    我运行的一个开源项目的无耻的插件,但是考虑到关于哪个.NET日志框架更活跃的讨论,我想我应该发布一个强制性的链接 Serilog .

    要在应用程序中使用,Serilog类似于log4net(并大量使用)。然而,与其他.NET日志记录选项不同,Serilog是关于保留日志事件的结构以供脱机分析。当你写:

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

    { Answer: 42 } Answer .

    我们已经接近1.0版本,并且支持所有现代(.NET4.5、Windows应用商店和Windows Phone 8)平台。

        12
  •  8
  •   Pat    11 年前

    我想可以同时使用log4net和log4cxx,但是NLog可以开箱即用地处理托管和非托管代码。

    我也看了看 Common.Logging ,一个对日志api进行抽象的facade,它支持log4net、NLog和enterprise库。我不认为我会使用它,但是我喜欢他们在禁用日志记录时如何使用lambdas来提高性能(这是NLog和其他人共享的特性)。

        13
  •  4
  •   Gabe Timothy Khouri    12 年前

    Microsoft Enterprise Library Logging Block . 它有很好的设计师。

        14
  •  2
  •   tsimon    15 年前

    我认为普遍的共识是nlog的配置和使用更加容易。不过,两人都很有能力。

        15
  •  0
  •   Contango    11 年前

    SmartInspect 击败了NLog和log4net。

    它非常容易使用,文档非常好,而且您可以 查看和筛选以前记录的消息

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