2010-08-11 40 views
9

¿Hay alguna manera de exportar mensajes registrados en la consola de JavaScript en Google Chrome?Exportar registro de la consola JavaScript de Google Chrome

Si no, ¿alguien puede sugerir una buena forma de diagnosticar problemas de javascript en la máquina de un cliente? No he podido replicar los problemas localmente, a pesar de configurar un entorno idéntico.

Respuesta

17

Paso 1: Añadir un montón de declaraciones console.log que ayudará a diagnosticar su problema

Paso 2: Añadir la lógica para volver a definir console.log en el sistema del cliente para que realmente ahorra sus argumentos a la ventana .log (o lo que sea) en lugar de realmente iniciar sesión en la consola.

window.log = [] 
console = console || {"log":function(x) {window.log.push(x);}} 

Paso 3: Agregue un controlador de onUnload que dispara de una petición AJAX a su servidor con el contenido de window.log como uno de sus parámetros

Paso 4: Beneficio! ;-)

Una ventaja adicional de este sistema es que (una vez que lo tienes configurado) puedes usar console.log indiscriminadamente, y ya sea que estés en tu entorno de desarrollo o en tu entorno real, hará lo correcto.

+0

P. S. No todos los navegadores admiten onUnload; si el de su cliente no funciona, probablemente desee activar las llamadas AJAX en cada console.log en su lugar (o bien usar window.setInterval para "sondear" window.log con frecuencia). – machineghost

+0

Interesante y complicado ... ¡pero parece complicado! (en particular, el paso 3) ¿No hay una forma más fácil de hacer esto ...? – Dexter

+0

Es muy simple, pero solo para intentar mostrar que he agregado una segunda respuesta. – machineghost

1

Puede usar mi biblioteca de registro de JavaScript, log4javascript. Necesitará:

  • Establecer log4javascript para enviar mensajes de registro al servidor mediante AjaxAppender (ver el quick start guide, cerca de la parte inferior)
  • Añadir llamadas de registro a tu JavaScript
  • Recoge los mensajes de registro en el servidor usando su tecnología de elección
7

Aquí hay una versión ligeramente más corta/más simple de mi respuesta anterior. Para facilitar las cosas, haremos una llamada AJAX en cada registro, y para facilitar aún más las cosas, utilizaremos jQuery para hacer el "trabajo pesado". (Si usa una biblioteca JS distinta de jQuery, debería tener algún tipo de método similar; si no, o si no está usando una biblioteca JS ... time to seriamente considere jQuery!) Oh, y nosotros ' Lanzaremos un pseudo-código del lado del servidor para demostrar cuán fácil es esa parte de la ecuación.

Paso 1: Añadir un montón de declaraciones console.log que ayudará a diagnosticar su problema

Paso 2: Añadir la lógica para volver a definir console.log en el sistema del cliente para que envíe el registro de su servidor si no hay una consola

var SERVER_URL = "www.yourServer.com/ajaxLogger.jsp"; 
var ajaxConsole = {"log":function(x) { 
    $.get(SERVER_URL, {"log":x}); 
}} 
console = console || ajaxConsole; // If there is no console, use the AJAX one 

Paso 3: Crear una página de inicio de sesión en el servidor de

el siguiente ejemplo se utiliza pseudo-código, ya que cada uno tiene un lenguaje de servidor diferente:

String log = pageParameters["log"]; 
Database.execute("INSERT INTO yourLogTable (log, date) VALUES ('" + 
     dbEscape(log) +"', current date)"); 
1

Hay una herramienta de código abierto que le permite guardar todos los resultados console.log en un archivo en su servidor - JS LogFlush (plug!).

JS LogFlush es una solución integrada de registro de JavaScript que incluyen:

  • entre navegadores reemplazo de IU-menos de console.log - en el lado del cliente.
  • sistema de almacenamiento de registro - en el lado del servidor.

Demo

Cuestiones relacionadas