Captura todos los errores de JavaScript y envíalos al servidor


Me preguntaba si alguien tenía experiencia en el manejo de errores de JavaScript a nivel mundial y enviarlos desde el navegador del cliente a un servidor.

Creo que mi punto es bastante claro, quiero saber cada excepción, error, error de compilación, etc. eso sucede en el lado del cliente y enviarlos al servidor para reportarlos.

Estoy usando principalmente MooTools y head.js (para el lado JS) y Django para el lado del servidor.

Author: Xufox, 2011-03-16

6 answers

Recientemente probé Sentry en producción y funciona bien (JS y otros lenguajes como PHP)

1 - Es de código abierto (puede instalarlo en su propio servidor) 2 - Puede utilizar el plan gratuito (100 informes / día)

O instálalo en tu servidor: github.com/getsentry

 15
Author: Tarek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-29 05:28:28

Echaría un vistazo a la ventana .onerror

Ejemplo:

window.onerror = function(message, url, lineNumber) {  
  //save error and send to server for example.
  return true;
};  

Tenga en cuenta que devolver true evitará la activación del controlador predeterminado, y devolver false permitirá que el controlador predeterminado se ejecute.

 297
Author: Mike Lewis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-16 16:13:55

También, el http://jslogger.com el servicio puede ayudar con eso:

Registra los errores y eventos de Javascript en la nube

De http://jslogger.com/features :

A partir de ahora puede espiar todos los errores que rompen la experiencia del usuario de su sitio. Cada error de Javascript será capturado y traído a usted para su posterior depuración.

DESCARGO de RESPONSABILIDAD: no está afiliado con el servicio/empresa.

 1
Author: Ivan Kurmanov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-04 09:54:21

Puede probar Atatus - Es un nuevo Servicio de Seguimiento de Errores de JavaScript junto con el Monitoreo de Usuarios Reales (RUM) para aplicaciones web modernas.

No solo capturamos los errores, sino también los eventos de usuario que desencadenaron el error. Esto le da pasos para reproducir el error en su extremo.

Junto con la captura de errores, también capturamos el tiempo de carga de la página y lo mostramos a través de diferentes perspectivas: Geo, Navegador, Desglose de página, Histograma de página, Monitoreo Ajax y Transacción Monitoreo.

Https://www.atatus.com/

Documentos disponibles: https://www.atatus.com/docs

Descargo de responsabilidad: Soy un desarrollador web en Ataus.

 1
Author: Fizer Khan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-23 05:42:22

Si tu sitio web utiliza Google Analytics, puedes hacer lo que yo hago:

window.onerror = function(message, source, lineno, colno, error) {
  if (error) message = error.stack;
  ga('send', 'event', 'window.onerror', message, navigator.userAgent);
}

Algunos comentarios sobre el código anterior:

  • Para los navegadores modernos, el seguimiento de la pila completa se registra.
  • Para navegadores antiguos que no capturan el seguimiento de la pila, el mensaje de error se registra en su lugar. (Sobre todo la versión anterior de iOS en mi experiencia).
  • La versión del navegador del usuario también se registra, por lo que puede ver qué versiones del sistema operativo/navegador están lanzando qué errores. Eso simplifica el error priorización y pruebas.
  • Este código funciona si utiliza Google Analytics con "analytics".js", así. Si está utilizando " gtag.js " en su lugar, así, necesita ajustar la última línea de la función. Vea aquí para más detalles.

Una vez que el código está en su lugar, así es como ve los errores de Javascript de sus usuarios:

  1. En Google Analytics, haga clic en la sección Behavior y luego en el informe Top Events.
  2. , obtendrá una lista de Eventos Categorías. Haga clic en window.onerror en la lista.
  3. Verá una lista de rastros de pila de Javascript y mensajes de error. Agregue una columna al informe para las versiones del sistema operativo/navegador de sus usuarios haciendo clic en el botón Secondary dimension e ingresando Event Label en el cuadro de texto que aparece.
  4. El informe se verá como la captura de pantalla a continuación.
  5. Para traducir las cadenas del sistema operativo/navegador a descripciones más legibles por humanos, las copio y pego en https://developers.whatismybrowser.com/useragents/parse /

introduzca la descripción de la imagen aquí

 1
Author: Martin Omander,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-09 20:40:50

Es posible que desee comprobar hacia fuera este nuevo servicio, http://rescuejs.com/.

Le permite registrar todos sus errores de javascript sin escribir código del lado del servidor usted mismo. También rastrea las versiones del navegador y así sucesivamente.

No estoy seguro de considerarlos 100% "listos para la empresa", pero definitivamente vale la pena echarle un vistazo.

 -2
Author: lillesand,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-08 11:45:34