有人有这两方面的经验吗?它们之间有什么不同?
我们计划使用其中一个来登录企业应用程序。
引用:
log4net
nlog
编辑:我们对nlog或log4net没有现有的依赖关系。
首先查看堆栈的其余部分。
除此之外:两者都很好。
我自己选择了Log4Net。配置起来很麻烦,如果配置不正确,找出哪里出了问题也很麻烦。但是,您可以让它做几乎任何您想从日志记录器。
你也可以考虑微软企业库日志记录块。它有很好的设计师。
我认为一般的共识是nlog更容易配置和使用。不过,两者都很有能力。
正如我注意到的那样,log4net在应用程序运行的整个过程中都会锁定它们的输出文件,因此不能删除它们。除此之外,它们是相似的。
所以我更喜欢NLog。
对我们来说,关键的区别在于整体表现……
看看NLog和Log4Net中的Logger.IsDebugEnabled,从我们的测试来看,NLog有更少的开销,这就是我们所追求的(低延迟的东西)。
Logger.IsDebugEnabled
我最近被要求为一个即将到来的项目“创建一些登录的原型”。我没有任何日志框架的经验。我花了几天时间在Log4Net、NLog和Enterprise Library上研究、浏览教程、制作玩具应用程序等。3-4周后再回来,将它们整合成一个完整的演示版本。希望这些对你们有用。
我对我们项目的建议是:
这是基于以下发现(意见!):
显然到目前为止我喜欢NLog。尽管有其他可用的解决方案,但还不足以使用它。
我赞同上面的方法,并且更喜欢nLog。Entlib不必要地膨胀。
有一件事总是让我与Log4net忘记添加以下到全局。Asax初始化组件:
log4net.Config.XmlConfigurator.Configure();
对于那些晚到这个线程的人,你可能想要回顾一下。net基类库(BCL)。当TraceSource类引入时(大约在2005年),许多人忽略了。net 1.1和。net 2.0之间的变化。
使用TraceSource类似于其他日志框架,对日志进行粒度控制,在app.config/web中配置。配置和编程访问-没有企业应用程序块的开销。
还有很多比较:“log4net vs TraceSource”
如果你去在这里,你可以找到一个全面的矩阵,包括NLog和Log4Net库,以及企业库和其他产品。
有人可能会说,这个矩阵是为了强调矩阵中唯一的商业图书馆的特征。我认为这是正确的,但它是有用的,无论如何驱动我的选择与NLog。
问候
一个没有被过多讨论的关键考虑因素是支持和更新。
Log4Net自2006年4月19日发布1.2.10版本以来一直没有更新。
相反,自2006年以来一直积极支持的NLog将很快发布NLog 2.0支持许多平台,当log4net上次更新时还不存在,例如:
一些比较信息:
http://pauliusraila.blogspot.com/2010/10/solving-database-logging-bottlenecks.html
我还看了常见的。日志记录,一个对日志api进行抽象的facade,它支持log4net, NLog和enterprise Library。我不认为我会使用它,但我喜欢他们如何使用lambdas来提高日志记录被禁用时的性能(一个与NLog和其他可能共享的特性)。
由于最近使用过这两个框架,我想我可以分享一下我对这两个框架的看法。
我被要求评估现有web应用程序的日志框架,在浏览了各种在线论坛后,我将选择范围缩小到NLog (v2.0)和log4net (v1.2.11)。以下是我的发现:
NLog的设置/启动非常简单。你浏览了他们网站上的入门教程,你就完成了。你会对nlog的情况有一个大致的了解。配置文件是如此直观,任何人都可以理解配置。例如:如果你想设置内部登录,你可以在Nlog配置文件的头节点中设置标志,这是你期望它在的地方。在log4net中,您可以在web中设置不同的标志。配置的appSettings部分。
在log4net中,内部日志记录不输出时间戳,这很烦人。在Nlog中,你会得到一个带时间戳的日志。我发现它在我的评估中非常有用。
过滤器在log4net -你最好检查我的这个问题- log4net过滤器——如何编写AND过滤器来忽略日志消息,如果你找到了答案/解决方案,请让我知道。 我知道,对于这个问题有一个变通办法,因为你可以编写自己的自定义过滤器。但是一些在log4net中不容易得到的东西。
性能——我使用一个存储过程向数据库记录了大约3000条日志消息。我使用了简单的for循环(int I =0;i< 3000;我+ +……将同一条消息记录3000次。对于写入:log4net, AdoAppender花费的时间几乎是NLog的两倍。
Log4net不支持异步追加器。
经过比较,我选择了NLog作为日志框架。:)
根据我的经验,SmartInspect优于NLog和log4net。
它非常容易使用,文档很棒,你可以查看和过滤以前记录的消息与他们的交互式日志查看器,这是一个巨大的现实世界的优势。
我喜欢的一件事是数据的标签视图,就像Chrome中的浏览器标签。每个选项卡都可以提供不同的日志过滤视图。
对于我运行的一个开源项目的无耻插件,但是考虑到关于哪个. net日志框架更活跃的热烈讨论,我想我应该发布一个到Serilog的强制性链接。
要在应用程序中使用,Serilog类似于log4net(并大量借鉴了log4net)。然而,与其他. net日志选项不同的是,Serilog是关于保存日志事件的结构以供脱机分析。当你写:
Log.Information("The answer is {Answer}", 42);
大多数日志库立即将消息呈现为字符串。Serilog也可以这样做,但它保留了{ Answer: 42 }属性,以便以后使用许多NoSQL数据存储之一时,您可以根据Answer的值正确地查询事件。
{ Answer: 42 }
Answer
我们已经接近1.0并支持所有的现代(。NET 4.5、Windows Store和Windows Phone平台。