debugging imprimir - JavaScript:¿Cómo imprimo un mensaje a la consola de errores?




firefox console.error (16)

¿Cómo puedo imprimir un mensaje a la consola de errores, preferiblemente incluyendo una variable?

Por ejemplo, algo como:

print('x=%d', x);

Answers

Una nota sobre 'throw ()' mencionada anteriormente. Parece que detiene la ejecución de la página completamente (verifiqué en IE8), por lo que no es muy útil para el registro de "procesos en curso" (como para rastrear una determinada variable ...)

Mi sugerencia es tal vez agregar un elemento de área de texto en algún lugar de su documento y cambiar (o agregar) a su valor (que cambiaría su texto) para registrar información cuando sea necesario ...


Esto no se imprime en la Consola, pero le abrirá una ventana emergente de alerta con su mensaje que podría ser útil para algunos errores de depuración:

solo haz:

alert("message");

Para responder realmente a la pregunta:

console.error('An error occurred!');
console.error('An error occurred! ', 'My variable = ', myVar);
console.error('An error occurred! ' + 'My variable = ' + myVar);

En lugar de error, también puede usar información, registrar o advertir.


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 un dolor tener que agregarlo en todas partes. Una solución si está usando jQuery es ponerlo en su archivo jQuery al final, primero minificado:

function log()
{
    if (arguments.length > 0)
    {
        // Join for graceful degregation
        var args = (arguments.length > 1) ? Array.prototype.join.call(arguments, " ") : arguments[0];

        // This is the standard; Firebug and newer WebKit browsers support this.
        try {
            console.log(args);
            return true;
        } catch(e) {
            // Newer Opera browsers support posting erros to their consoles.
            try {
                opera.postError(args);
                return true;
            } 
            catch(e) 
            {
            }
        }

        // Catch all; a good old alert box.
        alert(args);
        return false;
    }
}

La forma más sencilla de hacer esto es:

console.warn("Text to print on console");


Con la sintaxis de es6 puedes usar:

console.log(`x = ${x}`);

Las excepciones se registran en la consola de JavaScript. Puedes usar eso si quieres mantener a Firebug desactivado.

function log(msg) {
    setTimeout(function() {
        throw new Error(msg);
    }, 0);
}

Uso:

log('Hello World');
log('another message');

Aquí hay una solución a la pregunta literal de cómo imprimir un mensaje a la consola de errores del navegador, no a la consola del depurador. (Puede haber buenas razones para evitar el depurador).

Como señalé en los comentarios sobre la sugerencia de lanzar un error para recibir un mensaje en la consola de errores, 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 utilizando setTimeout. De ahí mi solución (que resulta ser una elaboración de la de Ivo Danihelka):

var startTime = (new Date()).getTime();
function logError(msg)
{
  var milliseconds = (new Date()).getTime() - startTime;
  window.setTimeout(function () {
    throw( new Error(milliseconds + ': ' + msg, "") );
  });
}
logError('testing');

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 del método Error es para el nombre de archivo, que es una cadena vacía aquí para evitar la salida del nombre de archivo y el número de línea inútiles. Es posible obtener la función de la persona que llama pero no de una forma independiente del navegador simple.

Sería bueno si pudiéramos mostrar el mensaje con un ícono de advertencia o mensaje en lugar del ícono de error, pero no puedo encontrar una manera de hacerlo.

Otro problema con el uso del lanzamiento es que podría ser atrapado y tirado por un try-catch adjunto, y poner el lanzamiento en un hilo separado también evita ese obstáculo. Sin embargo, existe 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í.


console.error(message); //gives you the red errormessage
console.log(message); //gives the default message
console.warn(message); //gives the warn message with the exclamation mark in front of it
console.info(message); //gives an info message with an 'i' in front of the message

También puede agregar CSS a sus mensajes de registro:

console.log('%c My message here', "background: blue; color: black; padding-left:10px;");


Si está utilizando Firebug y necesita ser compatible con IE, Safari u Opera, Firebug Lite agrega la compatibilidad con console.log () a estos navegadores.


Para responder a su pregunta puede utilizar las características de ES6,

var var=10;
console.log(`var=${var}`);

Si usas Safari , puedes escribir

console.log("your message here");

y aparece justo en la consola del navegador.


Instale Firebug y luego puede usar console.log(...) y console.debug(...) , etc. (consulte la documentación para obtener más información).


Esto es lo que todos queremos:

function Enum(constantsList) {
    for (var i in constantsList) {
        this[constantsList[i]] = i;
    }
}

Ahora puedes crear tus enums:

var YesNo = new Enum(['NO', 'YES']);
var Color = new Enum(['RED', 'GREEN', 'BLUE']);

Al hacer esto, se puede acceder a las constantes de la forma habitual (SíNo.SÍ, Color.GREEN) y obtienen un valor int secuencial (NO = 0, SÍ = 1; ROJO = 0, VERDE = 1, AZUL = 2).

También puede agregar métodos, utilizando Enum.prototype:

Enum.prototype.values = function() {
    return this.allValues;
    /* for the above to work, you'd need to do
            this.allValues = constantsList at the constructor */
};


Edición - pequeña mejora - ahora con varargs: (desafortunadamente no funciona correctamente en IE: S ... debería seguir con la versión anterior)

function Enum() {
    for (var i in arguments) {
        this[arguments[i]] = i;
    }
}

var YesNo = new Enum('NO', 'YES');
var Color = new Enum('RED', 'GREEN', 'BLUE');




javascript debugging