3 回答
TA贡献2039条经验 获得超7个赞
我最近受命为即将到来的项目“原型化一些登录”。我没有任何日志记录框架的经验。我在Log4Net,NLog和Enterprise Library上研究,浏览了教程,制作了玩具应用程序,等等。3-4周后回来,将它们放在一起进行演示。希望其中一些对您有用。
我对我们的项目的建议是:
使用日志外观(例如Common.Logging,SimpleLoggingFacade)来避免直接依赖。
如果最终将Enterprise Library用于其他功能,则也将其用于日志记录。
如果最终使用的东西依赖Log4Net,请使用Log4Net。
如果以上都不是,请使用NLog。我更喜欢。
这是基于以下发现(观点!):
所有这三个框架都有能力并且可以做一些复杂的事情。我们需要一个高质量的解决方案,但坦率地说,不需要超高性能或60种类型的事件接收器。
所有这三个都有非常相似的基本概念。
每个都有自己的绝妙技巧,例如真正的高级路由,动态日志文件名,文件截断等。
所有3个文件都以自己的方式很好地记录在案。
对于像我这样的完整新手,他们一开始有点尴尬。这里的基础知识没有太大的差异。我克服了
几周后重新访问时,NLog 显然是最容易恢复的。我只需要很少的化妆。使用Log4Net,我不得不重新回顾一些在线示例才能开始。有了EntLib,我放弃了,并从头开始重新制作了这些教程-我完全迷失了。
我不知道如何让EntLib做一些事情,例如登录数据库。这可能很容易,但是超出了我的时间限制。
Log4Net和NLog的代码占用量很小。EntLib垃圾邮件,但无论如何我都会在其上使用外墙。
我不小心配置了EntLib,它在运行时告诉我。Log4Net没有。我没有使用NLog意外配置错误。
EntLib带有一个漂亮的app.config编辑器,您100%需要它。NLog具有配置文件架构,因此您会得到“ intellisense”。Log4Net随附nada。
显然,到目前为止,我喜欢NLog。尽管有其他解决方案,但仍不足以使用它。
TA贡献1801条经验 获得超16个赞
尚未讨论的关键考虑因素是支持和更新。
自2006年4月19日发布1.2.10版以来,Log4Net尚未更新。
相比之下,自2006年以来就一直积极支持NLog,它将很快发布NLog 2.0,以支持上次更新log4net时不存在的许多平台,例如:
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配置文件
TA贡献1786条经验 获得超13个赞
最近在这两个框架上都有经验,我认为我可以就每个框架分享自己的观点。
我被要求评估现有Web应用程序的日志记录框架,在经历各种在线论坛后,我将选择范围缩小到NLog(v2.0)和log4net(v1.2.11)。这是我的发现:
使用NLog进行设置/启动非常简单。您在他们的网站上浏览了“入门指南”,然后就完成了。您有一个不错的主意,nlog会是什么样子。配置文件非常直观,任何人都可以理解配置。例如:如果要设置内部登录,请在Nlog配置文件的头节点中设置该标志,这是您期望的位置。在log4net中,您可以在web.config的appSettings部分中设置不同的标志。
在log4net中,内部日志记录不会输出令人讨厌的时间戳。在Nlog中,您会获得带有时间戳的漂亮日志。我发现它对我的评估非常有用。
log4net中的过滤器-您最好检查一下我的问题-log4net过滤器-如何编写AND过滤器以忽略日志消息,如果您找到答案或解决方案,请告诉我。我了解,此问题有解决方法,因为您可以编写自己的自定义过滤器。但是有些东西在log4net中不容易获得。
性能-我使用存储过程将大约3000条日志消息记录到数据库中。我使用了简单的for循环(int i = 0; i <3000; i ++ ...)记录了3000条相同的消息。对于日志记录:log4net AdoAppender花费的时间几乎是NLog的两倍。
Log4net不支持异步附加程序。
选择NLog作为日志记录框架对我来说已经足够了。:)
添加回答
举报