log4net与Nlog

log4net与Nlog,log4net,nlog,Log4net,Nlog,有人对两者都有经验吗?他们是如何相互竞争的 我们正计划使用其中一个来登录企业应用程序 参考资料: 编辑:我们对nlog或log4net都没有现有的依赖项。首先查看堆栈的其余部分 如果您使用的是NHibernate,它将直接使用Log4Net。 其他框架可能需要其他特定的记录器 除此之外:两者都很好 我自己已经决定使用Log4Net。配置起来会很痛苦,如果配置不正确,找出哪里出了问题也会很痛苦。但是你可以让它做任何你想从一个记录者那里得到的事情 如果您对Log4Net没有长期存在的问题,下面是

有人对两者都有经验吗?他们是如何相互竞争的

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

参考资料:


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

首先查看堆栈的其余部分

如果您使用的是NHibernate,它将直接使用Log4Net。 其他框架可能需要其他特定的记录器

除此之外:两者都很好

我自己已经决定使用Log4Net。配置起来会很痛苦,如果配置不正确,找出哪里出了问题也会很痛苦。但是你可以让它做任何你想从一个记录者那里得到的事情

如果您对Log4Net没有长期存在的问题,下面是我写的一篇关于如何开始使用它的文章:
你也可以考虑一下。它有一个很好的设计器。

我认为人们普遍认为nlog更易于配置和使用。不过,这两种方法都非常有效。

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


所以我更喜欢NLog。

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

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

干杯, Florian

我最近被指派为一个即将到来的项目“制作一些日志原型”。我没有任何日志框架经验。我在Log4Net、NLog和企业图书馆上研究、浏览教程、制作玩具应用程序等了几天。3-4周后回来,并将它们组合成一个有凝聚力的演示。希望其中一些对你有用

我对我们项目的建议如下:

  • 使用日志外观(例如)来避免直接依赖关系
  • 如果我们最终将企业库用于其他设施,那么也可以将其用于日志记录
  • 如果我们最终使用了依赖于Log4Net的东西,那么就使用Log4Net
  • 如果上述情况均不存在,则使用NLog。我更喜欢这个
  • 这是基于这些发现(观点!):

    • 这三个框架都是有能力的,可以做一些复杂的事情。我们想要一个高质量的解决方案,但坦率地说,我们不需要超高性能或60种类型的事件接收器
    • 这三个都有非常相似的基本概念
    • 每种方法都有自己很酷的技巧,比如真正高级的路由、动态日志文件名、文件截断等
    • 所有3个都以各自的方式进行了很好的记录
    • 对于像我这样的新手来说,他们一开始都有点笨拙。这里的基本要素没有重大差异。我忘了
    • 几周后,当重新审视事物时,NLog显然是最容易恢复的。我几乎不需要再复习一下。使用Log4Net,我必须重新访问一些在线示例才能开始。有了EntLib,我放弃了,从头开始重新做教程——我完全迷路了
    • 我不知道如何让EntLib做一些事情,比如记录数据库。这可能很容易,但超出了我的时间限制
    • Log4Net和NLog的代码占用空间很小。EntLib是垃圾邮件,但无论如何我都会使用一个门面
    • 我不小心配置错了EntLib,它在运行时告诉我。Log4Net没有。我没有意外地错误配置NLog
    • EntLib附带了一个漂亮的app.config编辑器,这是您100%需要的。NLog有一个配置文件模式,因此您可以获得“intellisense”。Log4Net附带了nada

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

    我赞同上述观点,并且更喜欢nLog。Entlib是不必要的膨胀

    Re:Log4net使用Log4net时,我总是会忘记将以下内容添加到global.asax以初始化组件:

    log4net.Config.XmlConfigurator.Configure();
    

    对于任何延迟使用此线程的人,您可能需要回顾一下.Net基类库(BCL)。当引入TraceSource类时(大约2005年),许多人错过了.Net 1.1和.Net 2.0之间的变化

    使用TraceSource对于其他日志框架来说是非常有用的,它可以对日志、app.config/web.config中的配置和编程访问进行细粒度的控制,而不需要企业应用程序块的开销

    • (再看第二部分a、b、c)
    还有很多比较:“log4net vs TraceSource”

    如果你去的话,你可以找到一个全面的矩阵,包括NLog和log4net库以及企业库和其他产品

    有人可能会说,矩阵是以强调矩阵中唯一商业库的特征的方式完成的。我认为这是真的,但不管怎样,这对推动我对NLog的选择是有用的


    关于

    支持和更新是一个没有太多讨论的关键问题

    相比之下,NLog自2006年以来一直受到积极支持,不久将发布如下:

    • NET Framework 2.0 SP1及以上版本、3.5和4.0(客户端和扩展配置文件)
    • Silverlight 2.0、3.0、4.0
    • .NET Compact Framework 2.0、3.5
    • Mono 2.x配置文件

      • 好吧。。我使用企业库执行数据库日志记录任务 现在,由于性能瓶颈,我切换到NLog

        一些比较信息:


        我也支持NLog,因为它也适用于非托管代码。 我认为可以同时使用log4net和log4cxx,但NLog可以直接处理托管和非托管代码

        我还研究了一个对日志api进行抽象的外观,它支持log4net、NLog和Enterprise库。我不认为我会使用它,但我喜欢他们在禁用日志记录时如何使用lambdas来提高性能(这是一项与NLog和其他人共享的功能)。

        已经有了一个
        Log.Information("The answer is {Answer}", 42);