¿Cuál es la diferencia entre log4net y ELMAH?


108

Algunas personas usan ELMAH en lugar de log4net. ¿Qué lo hace mejor?

Me enteré de ELMAH en una respuesta a la pregunta de Stack Overflow ¿ Cómo puedo iniciar sesión en C #?



Ahora que el núcleo .net está en la imagen, ¿cambia el escenario? (elmah no es compatible con .net core a partir de enero de 2018).
Chaitanya Gadkari

Respuestas:


92

ELMAH tiene el propósito de rastrear errores y excepciones para sus aplicaciones web y le permite registrar o ver fácilmente esas excepciones a través de muchos mecanismos diferentes (SQL, RSS, Twitter, archivos, correo electrónico, etc.). Si no tiene un manejo de excepciones incorporado, ELMAH probablemente obtendrá lo que está buscando en términos de manejo de excepciones en un entorno de aplicación web.

Log4net también se puede utilizar para el registro de excepciones, sin embargo, es posible que deba utilizar sus propios controladores para conectarlos a su aplicación web. Log4net brillará sobre ELMAH si necesita realizar otros tipos de registro de información, ya que log4net es un marco de registro de uso general. Log4net también se puede utilizar en casi cualquier aplicación .NET.


3
log4net le da más control.
DarthVader

6
Puede obtener lo mejor de ambos mundos utilizando este Appender ELMAH para log4net. Simplemente registre lo que quiera (depurar, informar, advertir, error) con log4net pero almacenarlo en ELMAH nuget.org/packages/elmahappender_log4net_1.2.10
Sturla

111

Log4Net es un marco de registro de uso general con una API destinada a ser utilizada dentro de su aplicación (web, consola, 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 es un complemento IIS discreto específicamente para registrar excepciones en una aplicación web. No verá una referencia a ELMAH dentro de su aplicación, no tiene una API con la que interactúe. Utiliza los puntos de extensión IIS del módulo y del controlador para atornillar el comportamiento. Además cuenta con un front-end web para ver los errores que se han producido en tu aplicación web. Log4Net no tiene un front-end, solo una variedad de receptores de registro (Appenders) que pueden enviar sus mensajes de registro a cosas como archivos de registro, un servidor syslog, una base de datos, etc.


23
Una corrección, Elmah tiene una Api con la que el desarrollador puede interactuar. Por ejemplo, la señalización se logra a través de Elmah Api.
Ed DeGagne

8
¿Otra corrección? ELMAH es un .NET HttpModule / HttpHandler. NO es un complemento de IIS. ARR es un complemento. No ELMAH.
Maxime Rouiller

¿Cuál es su respuesta a los comentarios?
Peter Mortensen

36

La diferencia clave es que ELMAH registra las excepciones de aplicaciones no controladas; log4net registra todo lo que le diga que registre. Puede configurar log4net para registrar excepciones no controladas, pero ELMAH captura una gran cantidad de información útil lista para usar.


1
ELMAH captura una gran cantidad de información útil lista para usar, si se configura correctamente. durante la misma cantidad de tiempo, puede hacer lo mismo con log4net con más control.
DarthVader

DarthVader: ¿tiene una configuración de muestra de log4net que hace lo mismo?
JasonD

5
ELMAH captura una gran cantidad de información útil lista para usar, SIN configuración. Con configuración adicional, manejará tanto las excepciones no controladas como las excepciones controladas.
Trevor de Koekkoek

5

ELMAH funciona creando un módulo HTTP que se conecta a los eventos de error y luego realiza el registro. Esto puede frustrarse y romperse fácilmente por un mal diseño. Log4Net puede requerir trabajo adicional por adelantado, pero si usa un marco AOP y lo aplica en toda su clase o incluso en el ensamblado, puede lograr un registro de excepciones mucho mejor con muy poco código y esfuerzo.

ELMAH solo funciona si tiene acceso a HttpContext, lo que puede ser difícil de lograr en los servicios WCF. Por lo tanto, terminaría usando algún otro registrador en WCF de todos modos. ¿Por qué no utilizar una solución que sea más universal?



1

ELMAH se utiliza especialmente para aplicaciones web, mientras que log4net se utiliza tanto en aplicaciones web como de Windows. ELMAH tiene muchas más ventajas que log4net en una aplicación web.


5
¿Cuáles son esas ventajas? Pronto haré ASP.NET, así que me gustaría conocer su opinión informada. Todavía soy un principiante en .NET, por lo que es más difícil para mí interpretar lo que dicen en sus sitios.
IAdapter

Puede ver informes incluso sin escribir ningún código. Vea las características de elmah aquí code.google.com/p/elmah
Adeel

Elmah es muy limitado y la única "ventaja" son los informes, pero está limitado a las aplicaciones web que tienen acceso a HttpContext. Puede hacer que otros registradores registren datos en muchas otras fuentes sobre las que se puede informar.
Dustin Davis

0

ELMAH es muy poderoso, pero también muy específico en lo que hace. Hace mucho del trabajo por usted, mientras que creo que Log4Net requiere que usted maneje y registre los errores.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.