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