Contenido

Simple sistema de log para nuestro Javascript

4 oct

+ 0

Hace ya un tiempo vimos un sistema para gestionar los errores javascript que nos podemos encontrar en nuestra aplicación, para ello nos complicábamos con el uso de Ajax para hacer llegar el error al servidor.

Existen sistemas más sencillos como este que ví en una presentación de Nicholas C. Zakas:

function log(code, str){
 var img = new Image();
 img.src = log.php?code=' + encodeURIComponent(code) + '&str=' + encodeURIComponent(str);
}
// Uso
log(1,"Esto es un error");

Como podemos ver el sistema es sencillo y muy cómodo de implementar en nuestras aplicaciones.

Gestionando errores en nuestras aplicación

Las aplicaciones Javascript tienden a delegar la gestión de errores al navegador, lo que se traduce en mensajes de notificación y elementos que dejan de funcionar para el usuario.

Un concepto que debemos tener en cuenta es que somos los encargados de hacer saber al usuario que algo ha fallado y que acciones debe realizar para solventar el problema.

Ciclo de vida de un error

ciclo_de_vida_error
(Ver Imagen)

Como vemos en la imagen, de abajo a arriba nos encontramos el ciclo de vida desde que se ejecuta un error hasta que llega al navegador. Partiendo de esta imagen podemos definir una serie de acciones para controlar el error.

try…catch()

El primer nivel para controlar el error nos lo encontramos en nuestro código, ahí es donde definimos una escapatoria a un código que pueda dar error.

try {
 ....
} catch(ex){

 // X == tu código de error
 // ex.message == Mensaje de error devuelto por catch()
 log(X, ex.message); // Guardamos el log() en el servidor
}

window.onerror

En este punto nuestro código ya ha quedado atrás, y el navegador pasa a ejecutar el evento onerror de window. Como el resto de eventos del DOM podemos redefinir la funcionalidad del mismo y controlar un poco más el error producido.

window.onerror = function (msg, url, line){
 log(X, msg);
 return true; // Evitamos llegar al navegador
}

Conclusión

Estas herramientas únicamente nos deben proporcionar una solución a la gestión de errores de nuestras aplicaciones, con ellas podemos ofrecer al usuario alternativas cuando un error interrumpa el normal funcionamiento de nuestra aplicación y además registramos dichos errores para su evaluación posterior con el fin de solventarlos.

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.