log4net和ELMAH有什么区别?


Answers:


92

ELMAH的目的是跟踪Web应用程序的错误和异常,并允许您通过许多不同的机制(SQL,RSS,Twitter,文件,电子邮件等)轻松记录或查看这些异常。如果您没有内置的异常处理,则ELMAH很可能会为您提供Web应用程序环境中的异常处理所需的内容。

Log4net也可以用于异常日志记录,但是您可能需要滚动自己的处理程序才能插入Web应用程序。如果您需要进行其他类型的信息记录,则Log4net将超越ELMAH,因为log4net是通用记录框架。Log4net也可以在几乎任何.NET应用程序中使用。


3
log4net给您更多控制权。
DarthVader 2012年

6
使用此ELMAH Appender for log4net,您可以两全其美。只需使用log4net记录您喜欢的内容(调试,信息,警告,错误),然后将其存储在ELMAH nuget.org/packages/elmahappender_log4net_1.2.10
Sturla 2014年

111

Log4Net是一个通用日志记录框架,带有打算在您的应用程序(Web,控制台,dll等)中使用的API。

logger.Debug("Some low level debug message...");
logger.Info("Some basic info");
logger.Warn("Some business logic problem, but not critical");
logger.Error("An unexpected error");

ELMAH是一个不引人注目的IIS插件,专门用于在Web应用程序中记录异常。您不会在应用程序中看到对ELMAH的引用,它没有与之交互的API。它使用模块和处理程序IIS扩展点确定行为。此外,它还有一个Web前端,可以查看Web应用程序中发生的错误。Log4Net没有前端,只有各种各样的日志接收器(Appender),它们可以将您的日志消息发送到诸如日志文件,syslog服务器,数据库等之类的东西。


23
一项更正,Elmah确实具有开发人员可以与之交互的Api。例如,通过Elmah Api实现信令。
Ed DeGagne 2012年

8
另一个更正?ELMAH是.NET HttpModule / HttpHandler。它不是IIS插件。ARR是一个插件。不是ELMAH。
Maxime Rouiller 2014年

您对这些评论有何反应?
彼得·莫滕森

36

关键区别在于ELMAH记录未处理的应用程序异常。log4net记录您告诉它记录的所有内容。您可以配置log4net来记录未处理的异常,但是ELMAH可以立即获取大量有用的信息。


1
如果配置正确,ELMAH可以立即提供大量有用的信息。在相同的时间内,您可以使用log4net进行更多控制。
DarthVader 2012年

DarthVader-您是否具有执行相同操作的示例log4net配置?
JasonD

5
无需配置,ELMAH即可立即获取大量有用的信息。通过额外的配置,它将同时处理未处理的异常和已处理的异常。
Trevor de Koekkoek

5

ELMAH的工作方式是创建一个HTTP模块,该模块挂接到错误事件,然后进行日志记录。这很容易被不良的设计挫败和破坏。Log4Net可能需要额外的前期工作,但是如果您使用AOP框架并将其应用于您的类甚至程序集,则可以用很少的代码和精力来实现更好的异常日志记录。

ELMAH仅在可以访问HttpContext时才起作用,而这在WCF服务中很难实现。因此,无论如何,您最终还是要在WCF中使用其他记录器。为什么不只使用一种更通用的解决方案呢?



1

ELMAH特别用于Web应用程序,而log4net同时用于Web和Windows应用程序。在Web应用程序中,ELMAH比log4net具有更多优势。


5
这些优势是什么?我很快会做ASP.NET,所以我想知道您的见解。我仍然是.NET的初学者,因此对我来说很难解释他们在他们的网站上所说的话。
IAdapter 2011年

即使不编写任何代码,您也可以查看报告。在此处查看elmah功能code.google.com/p/elmah
Adeel

Elmah的功能非常有限,唯一的“优势”是报告,但它仅限于有权访问HttpContext的Web应用程序。您可以让其他记录器将数据记录到可以报告的许多其他来源。
达斯汀·戴维斯

0

ELMAH非常强大,但是其功能也非常具体。它为您完成了很多工作,而我相信Log4Net要求执行错误处理和日志记录。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.