Qual é a diferença entre log4net e ELMAH?


108

Algumas pessoas estão usando ELMAH em vez de log4net. O que o torna melhor?

Eu descobri sobre o ELMAH em uma resposta à pergunta do Stack Overflow. Como faço o login em C #?



Agora que o núcleo .net está em cena, o cenário muda? (elmah não oferece suporte a .net core desde janeiro de 2018).
Chaitanya Gadkari

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.


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.


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.


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.



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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.