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 #?
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 #?
Respostas:
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.
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.
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.
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.
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.
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.