¿Cómo puedo imprimir un mensaje en la consola de error, preferiblemente incluyendo una variable?
Por ejemplo, algo como:
print('x=%d', x);
javascript
debugging
Mark Harrison
fuente
fuente
Respuestas:
Instale Firebug y luego puede usar
console.log(...)
yconsole.debug(...)
, etc. (consulte la documentación para obtener más información).fuente
console.log()
etc. debería funcionar en todos los navegadores, incluido IE. Sin embargo, en todos los casos, debe tener la ventana del depurador abierta en ese momento, de lo contrario, las llamadas aconsole
generarán errores.También puede agregar CSS a sus mensajes de registro:
fuente
console.log
puedes usar css dentro de la consola: |Las excepciones se registran en la consola de JavaScript. Puede usar eso si desea mantener Firebug deshabilitado.
Uso:
fuente
throw
debe estar envuelto en unsetTimeout
?Una buena forma de hacer esto que funciona en varios navegadores se describe en Depuración de JavaScript: ¡Deseche sus alertas! .
fuente
throw()
Definitivamente no es la forma de hacer esto. te meterás en problemas tarde o temprano. para mí fue antes :(Aquí hay una solución a la pregunta literal de cómo imprimir un mensaje en la consola de errores del navegador, no en la consola del depurador. (Puede haber buenas razones para omitir el depurador).
Como señalé en los comentarios sobre la sugerencia de lanzar un error para obtener un mensaje en la consola de error, un problema es que esto interrumpirá el hilo de ejecución. Si no desea interrumpir el hilo, puede lanzar el error en un hilo separado, uno creado usando setTimeout. De ahí mi solución (que resulta ser una elaboración de la de Ivo Danihelka):
Incluyo el tiempo en milisegundos desde la hora de inicio porque el tiempo de espera podría sesgar el orden en el que puede esperar ver los mensajes.
El segundo argumento para el método de error es para el nombre de archivo, que es una cadena vacía aquí para evitar la salida del nombre de archivo inútil y el número de línea. Es posible obtener la función de llamada pero no de una manera simple e independiente del navegador.
Sería bueno si pudiéramos mostrar el mensaje con un icono de advertencia o mensaje en lugar del icono de error, pero no puedo encontrar una manera de hacerlo.
Otro problema con el uso del tiro es que podría ser atrapado y tirado por un try-catch cerrado, y poner el tiro en un hilo separado también evita ese obstáculo. Sin embargo, hay otra forma de detectar el error, que es si el controlador window.onerror se reemplaza por uno que hace algo diferente. No puedo ayudarte allí.
fuente
Si usas Safari , puedes escribir
y aparece justo en la consola del navegador.
fuente
console.log()
.console.log()
. No era cierto hasta hace poco.Para responder realmente la pregunta:
En lugar de error, también puede usar información, iniciar sesión o advertir.
fuente
console.error(..)
es una característica no estándar y no debe usarse en producción. ¿Cuál es su opinión sobre esto? ¿Tiene alguna sugerencia para un programador novato usandoconsole.error
vsconsole.log
?console.log(...)
"no estándar" también. En ese sentido,console.error
es tan estable comoconsole.log
.Si está utilizando Firebug y necesita admitir IE, Safari u Opera también, Firebug Lite agrega soporte de console.log () a estos navegadores.
fuente
El WebKit Web Inspector también es compatible con Firebug consola de API (sólo una pequeña adición a la respuesta de Dan ).
fuente
Una nota sobre 'throw ()' mencionada anteriormente. Parece que detiene la ejecución de la página por completo (verifiqué en IE8), por lo que no es muy útil para registrar "procesos en curso" (como rastrear una determinada variable ...)
Mi sugerencia es quizás agregar un elemento de área de texto en algún lugar de su documento y cambiar (o agregar) su valor (que cambiaría su texto) para registrar información cuando sea necesario ...
fuente
console.log()
,throw()
etc. Además, no hay nada de malo en el comportamiento dethrow()
lo que parece implicar: el hecho de que detenga la ejecución es intencional y documentado ( desarrollador. mozilla.org/en-US/docs/Web/JavaScript/Reference/… ), y es coherente con la forma en que se lanzan / capturan las excepciones en otros lenguajes de programación. (Si desea registrar el contenido de una variable sin detener la ejecución, para esoconsole.log()
está.)console.log
, por lo que la gente daba alternativas. Sobrethrow()
detener la ejecución, por supuesto , es intencional, nadie dijo que no. Es por eso que generalmente no es una buena manera de registrar información de depuración en tiempo de ejecución, lo que el OP quería ...Como siempre, Internet Explorer es el gran elefante en patines que te detiene simplemente usando
console.log()
.El registro de jQuery se puede adaptar con bastante facilidad, pero es una molestia tener que agregarlo en todas partes. Una solución si está utilizando jQuery es colocarlo en su archivo jQuery al final, minimizado primero:
fuente
Visite https://developer.chrome.com/devtools/docs/console-api para obtener una referencia completa de la API de la consola.
En este caso, el objeto sería su cadena de error
fuente
fuente
trabajando para mí ... estoy buscando esto ... utilicé Firefox. Aquí está mi guión.
Funciona en Firefox y Chrome.
fuente
La forma más sencilla de hacer esto es:
fuente
Para responder a su pregunta, puede usar las funciones de ES6,
fuente
Esto no se imprime en la consola, pero le abrirá una ventana emergente de alerta con su mensaje que podría ser útil para algunas depuraciones:
solo haz:
fuente
Con la sintaxis es6 puede usar:
fuente