Mat*_*att 383
我最近的任务是为即将到来的项目"原型化一些登录".我没有任何日志框架经验.我在Log4Net,NLog和Enterprise Library上研究,编写了教程,制作了玩具应用程序等几天.3-4周后回来并将它们组合成一个有凝聚力的演示.希望其中一些对您有用.
我对我们项目的建议如下:
这是基于这些发现(意见!):
所以很明显我到目前为止都喜欢NLog.尽管有其他解决方案,但还是不足以使用它.
Jay*_*tta 158
尚未讨论过的关键考虑因素是支持和更新.
自版本1.2.10于2006年4月19日发布以来,Log4Net尚未更新.
相比之下,NLog自2006年以来一直得到积极支持,很快就会发布NLog 2.0,支持上次更新log4net时不存在的许多平台,例如:
Nar*_*ade 97
最近有过这两个框架的经验,我想我可以分享我对每个框架的看法.
我被要求评估现有Web应用程序的日志框架,在通过各种在线论坛后,我将选择范围缩小到NLog(v2.0)和log4net(v1.2.11).以下是我的发现:
使用NLog进行设置/启动非常容易.您在他们的网站上浏览了入门教程,您就完成了.你得到一个公平的想法,nlog的情况如何.配置文件非常直观,任何人都可以理解配置.例如:如果要设置内部日志记录,则在Nlog配置文件的标头节点中设置标志,这是您期望的标志.在log4net中,您可以在web.config的appSettings部分中设置不同的标志.
在log4net中,内部日志记录不会输出令人讨厌的时间戳.在Nlog中,您可以获得带有时间戳的漂亮日志.我发现它在我的评估中非常有用.
log4net中的过滤器 - 您最好检查我的这个问题 - log4net过滤器 - 如何编写和过滤以忽略日志消息,如果您找到答案/解决方案,请告诉我.我知道,这个问题有一个解决方法,因为您可以编写自己的自定义过滤器.但是在log4net中不容易获得的东西.
性能 - 我使用存储过程将大约3000条日志消息记录到数据库.我使用简单的for循环(int i = 0; i <3000; i ++ ...将相同的消息记录3000次.对于写入:log4net AdoAppender花费的时间几乎是NLog的两倍.
Log4net不支持异步appender.
对我来说,选择NLog作为日志框架是足够的比较.:)
Jer*_*emy 36
对于任何迟到这个帖子的人,你可能想回顾一下.Net基类库(BCL).当引入TraceSource类(大约2005年)时,许多人错过了.Net 1.1和.Net 2.0之间的变化.
使用TraceSource很是类似其它日志框架,具有记录的精细的控制,在的app.config/web.config配置和编程访问 - 没有企业应用程序块的开销.
还有一些比较浮动:"log4net vs TraceSource"
Flo*_*yon 34
对我们来说,关键的区别在于整体性能......
Logger.IsDebugEnabled从NLog和Log4Net 看一下,从我们的测试来看,NLog的开销较少,这就是我们所追求的(低延迟的东西).
干杯,弗洛里安
Chr*_*sma 25
首先看一下堆栈的其余部分.
如果您使用的是NHibernate,它会直接使用Log4Net.其他框架可能还有其他需要的特定记录器.
除此之外:两者都很好.
我自己已经确定了Log4Net.配置可能会很痛苦,如果配置不正确,找出问题是很痛苦的.但是你可以让它做任何你想要的记录器.
如果你没有Log4Net的常见问题,这里有一篇关于如何开始使用它的文章:http: //elegantcode.com/2007/12/07/getting-started-with-log4net/
小智 16
嗯..我使用Enterprise库进行数据库记录任务,现在由于性能瓶颈我切换到NLog.
一些比较信息:
http://pauliusraila.blogspot.com/2010/10/solving-database-logging-bottlenecks.html
Fra*_*han 14
我回应上面的内容并且更喜欢nLog.Entlib不必要地臃肿.
Re:Log4net总是让我使用log4net的一件事是忘记将以下内容添加到global.asax来初始化组件:
log4net.Config.XmlConfigurator.Configure();
Run Code Online (Sandbox Code Playgroud)
正如我注意到的,log4net在应用程序运行的整个过程中锁定了它们的输出文件,因此您无法删除它们.否则他们是相似的.
所以我更喜欢NLog.
我运行的一个开源项目的无耻插件,但考虑到关于哪个.NET日志框架更活跃的热烈讨论,我想我会发布一个与Serilog的强制性链接.
要在应用程序中使用,Serilog与log4net类似(并且大量使用).但是,与其他.NET日志记录选项不同,Serilog是为了保留用于离线分析的日志事件的结构.当你写:
Log.Information("The answer is {Answer}", 42);
Run Code Online (Sandbox Code Playgroud)
大多数日志库会立即将消息呈现为字符串.Serilog也可以这样做,但它保留了{ Answer: 42 }属性,以便稍后使用多个NoSQL数据存储之一,您可以根据值来正确查询事件Answer.
我们接近1.0并支持所有现代(.NET 4.5,Windows Store和Windows Phone 8)平台.
小智 8
我也是第二个NLog,因为它也适用于非托管代码.我想可能一起使用log4net和log4cxx,但NLog可以开箱即用地处理托管和非托管代码.
我还查看了Common.Logging,它是一个用于抽象记录api的外观,它支持log4net,NLog和Entreprise Library.我不认为我会使用它,但我喜欢他们如何在禁用日志记录时使用lambdas来提高性能(与NLog和其他人共享的功能).
| 归档时间: |
|
| 查看次数: |
133164 次 |
| 最近记录: |