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周后回来,并将它们组合成一个有凝聚力的演示。希望其中一些对你有用
我对我们项目的建议如下:
- 这三个框架都是有能力的,可以做一些复杂的事情。我们想要一个高质量的解决方案,但坦率地说,我们不需要超高性能或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)
关于支持和更新是一个没有太多讨论的关键问题 相比之下,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);