2024-01-09 08:00:07

log4net vs. nlog

有人有这两方面的经验吗?它们之间有什么不同?

我们计划使用其中一个来登录企业应用程序。

引用:

log4net

nlog

编辑:我们对nlog或log4net没有现有的依赖关系。


当前回答

对于那些晚到这个线程的人,你可能想要回顾一下。net基类库(BCL)。在引入TraceSource类(大约在2005年)时,许多人忽略了。net 1.1和。net 2.0之间的变化。

使用TraceSource类似于其他日志框架,对日志进行粒度控制,在app.config/web中配置。配置和编程访问-没有企业应用程序块的开销。

.Net BCL团队博客:跟踪介绍-第一部分(也可以查看第二部分a,b,c)

还有很多比较:“log4net vs TraceSource”

其他回答

对于那些晚到这个线程的人,你可能想要回顾一下。net基类库(BCL)。在引入TraceSource类(大约在2005年)时,许多人忽略了。net 1.1和。net 2.0之间的变化。

使用TraceSource类似于其他日志框架,对日志进行粒度控制,在app.config/web中配置。配置和编程访问-没有企业应用程序块的开销。

.Net BCL团队博客:跟踪介绍-第一部分(也可以查看第二部分a,b,c)

还有很多比较:“log4net vs TraceSource”

根据我的经验,SmartInspect优于NLog和log4net。

它非常容易使用,文档很棒,您可以使用交互式日志查看器查看和过滤以前记录的消息,这是一个巨大的现实优势。

我喜欢的一件事是数据的标签视图,就像Chrome中的浏览器标签。每个选项卡都可以提供不同的日志过滤视图。

如果你去这里,你可以找到一个全面的矩阵,包括NLog和Log4Net库,以及企业库和其他产品。

有人可能会说,这个矩阵是为了强调矩阵中唯一的商业图书馆的特征。我认为这是正确的,但它是有用的,无论如何驱动我的选择与NLog。

问候

我最近被要求为一个即将到来的项目“创建一些登录的原型”。我没有任何日志框架的经验。我花了几天时间在Log4Net、NLog和Enterprise Library上研究、浏览教程、制作玩具应用程序等。3-4周后再回来,将它们整合成一个完整的演示版本。希望这些对你们有用。

我对我们项目的建议是:

使用日志facade(例如Common。日志,SimpleLoggingFacade)以避免直接依赖。 如果我们最终要将企业库用于其他功能,那么也要将其用于日志记录。 如果我们最终要使用依赖于Log4Net的东西,那么就使用Log4Net。 如果以上都不是,请使用NLog。我更喜欢这样。

这是基于以下发现(意见!):

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. All 3 have very similar basic concepts. 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. For a complete newb like me, they were all a little awkward initially. No drastic differences here for the basics. I got over it. 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. 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. Log4Net and NLog have a small in-code footprint. EntLib is spammy, but I'd use a facade over it anyway. 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. 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.

显然到目前为止我喜欢NLog。尽管有其他可用的解决方案,但还不足以使用它。

首先查看堆栈的其余部分。

如果你正在使用NHibernate,它直接利用Log4Net。 其他框架可能有它们需要的其他特定的记录器。

除此之外:两者都很好。

我自己选择了Log4Net。配置起来很麻烦,如果配置不正确,找出哪里出了问题也很麻烦。但是,您可以让它做几乎任何您想从日志记录器。

如果你对Log4Net没有长期的问题,这是我写的一篇关于如何开始使用Log4Net的文章: http://elegantcode.com/2007/12/07/getting-started-with-log4net/