Qual é a diferença entre log4net e ELMAH?

Respostas:

92

ELMAH tem como objetivo rastrear erros e exceções para seus aplicativos da web e permite que você registre ou visualize facilmente essas exceções por meio de muitos mecanismos diferentes (SQL, RSS, Twitter, arquivos, e-mail, etc.). Se você não tiver nenhum tratamento de exceção integrado, o ELMAH provavelmente obterá o que você está procurando em termos de tratamento de exceção em um ambiente de aplicativo da web.

Log4net também pode ser usado para registro de exceções, no entanto, pode ser necessário rolar seus próprios manipuladores para conectar ao aplicativo da web. Log4net brilhará sobre ELMAH se você precisar fazer outros tipos de registro de informações, pois log4net é uma estrutura de registro de propósito geral. Log4net também pode ser usado em quase todos os aplicativos .NET.

Mark Coleman
fonte
3
log4net oferece mais controle.
DarthVader
6
Você pode obter o melhor dos dois mundos usando este ELMAH Appender para log4net. Apenas registre o que você gosta (depuração, informação, aviso, erro) com log4net, mas armazene em ELMAH nuget.org/packages/elmahappender_log4net_1.2.10
Sturla
111

Log4Net é uma estrutura de registro de uso geral com uma API destinada a ser usada em seu aplicativo (web, console, dll, etc.).

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 é um plug-in IIS discreto especificamente para registrar exceções em um aplicativo da web. Você não verá uma referência a ELMAH em seu aplicativo, ele não tem uma API com a qual você interage. Ele usa os pontos de extensão IIS do módulo e do manipulador para corrigir o comportamento. Além disso, possui um front-end da web para visualizar os erros ocorridos em seu aplicativo da web. Log4Net não tem um front-end, apenas uma variedade de coletores de log (Appenders) que podem enviar suas mensagens de log para coisas como arquivos de log, um servidor syslog, um banco de dados, etc.

Mike Valenty
fonte
23
Uma correção, Elmah tem uma Api com a qual o desenvolvedor pode interagir. Por exemplo, a sinalização é obtida por meio do Elmah Api.
Ed DeGagne
8
Outra correção? ELMAH é um .NET HttpModule / HttpHandler. NÃO é um plugin do IIS. ARR é um plugin. Não é ELMAH.
Maxime Rouiller de
Qual é a sua resposta aos comentários?
Peter Mortensen,
36

A principal diferença é que ELMAH registra exceções de aplicativo não tratadas; log4net registra tudo o que você diz para registrar. Você pode configurar o log4net para registrar exceções não tratadas, mas ELMAH captura uma grande quantidade de informações úteis prontas para usar.

Jamie Ide
fonte
1
ELMAH captura uma grande quantidade de informações úteis prontas para usar, se você configurar corretamente. pela mesma quantidade de tempo, você pode fazer o mesmo com log4net com mais controle.
DarthVader
DarthVader - você tem um exemplo de configuração log4net que faz a mesma coisa?
JasonD
5
ELMAH captura uma grande quantidade de informações úteis prontas para usar, SEM configuração. Com configuração extra, ele tratará tanto exceções não tratadas quanto exceções tratadas.
Trevor de Koekkoek
5

ELMAH funciona criando um módulo HTTP que se conecta a eventos de erro e então faz o registro. Isso pode ser facilmente frustrado e quebrado por um projeto ruim. O Log4Net pode exigir trabalho adicional antecipado, mas se você usar uma estrutura AOP e aplicá-la em sua classe ou até mesmo no assembly, poderá obter um registro de exceção muito melhor com muito pouco código e esforço.

ELMAH só funciona se tiver acesso a HttpContext, o que pode ser difícil de conseguir em serviços WCF. Portanto, você acabaria usando algum outro registrador no WCF de qualquer maneira. Por que não usar apenas uma solução que seja mais universal.

Dustin Davis
fonte
4

ELMAH:

  • Aplicativo da web

Log4net:

  • Aplicativo da web

  • Aplicativo Windows

Referências adicionais: ref_1 ref_2

Sgokhales
fonte
1

ELMAH é especialmente usado para aplicativos da web, enquanto o log4net é usado em aplicativos da web e do Windows. ELMAH tem muito mais vantagens do que log4net em um aplicativo da web.

Adeel
fonte
5
Quais são essas vantagens? Eu farei ASP.NET em breve, então gostaria de saber sua opinião fundamentada. Ainda sou um iniciante em .NET, então é mais difícil para mim interpretar o que eles estão dizendo em seus sites.
IAdapter de
Você pode visualizar relatórios mesmo sem escrever nenhum código. Veja os recursos do elmah aqui code.google.com/p/elmah
Adeel
Elmah é muito limitado e a única "vanguarda" são os relatórios, mas é limitado a aplicativos da web que têm acesso ao HttpContext. Você pode fazer com que outros registradores registrem dados em muitas outras fontes que podem ser relatadas.
Dustin Davis de
0

ELMAH é muito poderoso, mas também muito específico no que faz. Ele faz muito trabalho para você, embora eu acredite que o Log4Net requer que você faça o tratamento e registro de erros.

Dean Thomas
fonte