log4net vs. Nlog [closed]

在Stack over flow 上看到的


I was recently tasked to "prototype up some loggin'" for an upcoming project. I didn't have any logging framework experience. I researched, ran through tutorials, made toy apps, etc. on Log4Net, NLog, and Enterprise Library for a few days. Came back 3-4 weeks later and put them together into a cohesive demo. Hopefully some of this is useful to you.

  最近我为一个新项目选择一个"日志框架(framework)"。由于我之前没有任何的日志框架经验,于是我搜索,阅读入门手册,运行demo等待,经过3,4周的黑暗摸索,本屌终于对log4net,Nlog,Enterprise Libary(企业库)有了一个大概的了解:

My recommendation for our project is this:


  1. Use a logging facade to avoid direct dependencies. 使用日志门门面模式避免直接操作。 (啥是门面模式请看文章结尾),大意是说不要每个页面都  
        Logger logger = LogManager.GetCurrentClassLogger();

    而是建立一个静态类 直接调用,比如



  2. If we end up using Enterprise Library for other facilities, then use it for Logging, too.如果我们的终端(程序)已经用企业库,那就用企业库日志吧
  3. If we end up using something with a dependency on Log4Net, use Log4Net.如果我们的程序已经用了第三方日志 log4Net 就用吧
  4. If none of the above, use NLog. Which I'd prefer.如果你是一个全新项目,或者压根还未用到日志,或者在写着自己的猥琐日志方法,用NLOG吧,我墙裂推荐。

That's based on these findings (opinions!):


  • All 3 frameworks are capable and can do some sophisticated things. We want a quality solution, but frankly don't need ultra high performance or 60 types of event sinks.
  • 3个框架都很好很强大,可以处理复杂的日志情况。我的这个项目,需要一个高品质的解决方案,但是不需要对性能有极高要求和超复杂的事件类型(60种事件槽?求高手解答这个概念)


  • All 3 have very similar basic concepts.
  • 3个框架都拥有相似的基本概念。(.....此处省略2万字)


  • Each has its own cool tricks, like really advanced routing, or dynamic log filenames, file truncating, etc.
  • 它们都有自己的超酷玩意儿,比如高级路由,动态日志文件,文件大小控制,文件截断等待...


  • All 3 are pretty well documented in their own way.
  • 她们都有自己的完整文档(尼玛,我找了半天的NLOG 数据库配置)


  • For a complete newb like me, they were all a little awkward initially. No drastic differences here for the basics. I got over it.
  • 对我这样一个非常十分高端牛逼(newb)的程序员,这3个框架的初始化看起来有些蛋疼,但基本上疼的不是很激烈,我克服一下就过去了。


  • When revisiting things a few weeks later, NLog was clearly the easiest to resume. I needed very little brush up on it. With Log4Net, I had to revisit a few online examples to get going. With EntLib, I gave up and did the tutorials all over again from scratch - I was totally lost.
  • 过了几天,我重新复习一下3个日志款框架,NLOG我瞄一眼就知道理解了,LOG4NET我稍微多花了一些时间就理解了,至于企业库,我勒了个去,劳资又跑到官网去看《基本入门手册》了---我完全被它打败了。


  • I couldn't figure out how to get EntLib to do some things like log to the database. It might be easy, but it was beyond my time limit.
  • 我完全不知道怎么配置/使用企业库的数据库日志(怎么样把日志写到数据库中)。也许它很简单,但是像我这样非常高端牛逼(newb)的职业程序员就捉急的找不到.....
  • Log4Net and NLog have a small in-code footprint. EntLib is spammy, but I'd use a facade over it anyway.
  • 这句话的意思貌似是从某个方面(代码嵌入??)log4Nte he Nlog比企业库好那么一点点。


  • I accidentally mis-configured EntLib and it told me at run time. Log4Net didn't. I didn't have an accidental mis-config with NLog.
  • 有一次我意外的忘记配置企业库,这货居然等到程序跑起来了才告诉我说没有配置好文件,Nlog就不存在介个问题。最牛b的是nlog,我从没机会配置错。


  • EntLib comes with a nice looking app.config editor, which you 100% need. NLog has a config file schema so you get "intellisense". Log4Net comes with nada.
  • 企业库会给你一个漂亮的appconfig编辑器,你会很喜欢它,Nlog有“智能感应”哦,Log4net 木有这些东东
    nada /ˈnɑːdə/ 
    1. Nnothing 无物[美国英语][非正式]


So obviously I like NLog so far. Not enough to use it in spite of having another solution available, though.




posted on 2013-05-22 11:38 骄傲的豹子 阅读(...) 评论(...) 编辑 收藏