En capítulos anteriores registramos contenido personalizado. Log4net también permite guardar excepciones con su traza de pila completa, facilitando la depuración a los desarrolladores.
try
{
int b = 0;
int a = 100 / b;
}
catch (Exception ex)
{
log.Error(ex.Message, ex);
}Lenguaje del código: PHP (php)
- Disparo de la excepción:
100 / b. Al ser la variableb=0, se lanzaDivideByZeroExceptionpor división entre cero. - Captura de excepción:
catch (Exception ex)captura todas las excepciones derivadas deException. - Sintaxis clave para logs:
log.Error(ex.Message, ex);- Primer parámetro: mensaje de log personalizado (aquí pasamos el resumen de excepción
ex.Message) - El segundo parámetro debe ser el objeto de excepción
ex - Cuando log4net detecta que el segundo argumento es una instancia
Exception, imprimeautomáticamente toda la traza de pila (StackTrace) con ubicación del error y cadena de llamadas.
- Primer parámetro: mensaje de log personalizado (aquí pasamos el resumen de excepción
Forma incorrecta (no imprime traza de pila)
// Solo pasamos texto, se pierde la traza de pila
log.Error(ex.ToString());
log.Error(ex.Message);Lenguaje del código: JavaScript (javascript)
Este modo solo muestra el texto de error. Algunos formatos de log no expanden la traza de llamadas automáticamente y complican la depuración.
Sintaxis estándar recomendada
// Recomendado: añadir contexto de negocio y pasar el objeto excepción
log.Error("Ocurrió un error al ejecutar la operación de división", ex);Lenguaje del código: JavaScript (javascript)
Registrar información de excepción
Previous: Archivo de configuración independiente