sirve - ver codigo javascript de una pagina




JavaScript: ¿Cómo imprimo un mensaje a la consola de errores? (12)

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

Por ejemplo, algo como:

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

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í.


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;
    }
}


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");

La forma más sencilla de hacer esto es:

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

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');

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.


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



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 ...


function foo() {
  function bar() {
    console.trace("Tracing is Done here");
  }
  bar();
}

foo();

console.log(console); //to print console object
console.clear('console.clear'); //to clear console
console.log('console.log'); //to print log message
console.info('console.info'); //to print log message 
console.debug('console.debug'); //to debug message
console.warn('console.warn'); //to print Warning
console.error('console.error'); //to print Error
console.table(["car", "fruits", "color"]);//to print data in table structure
console.assert('console.assert'); //to print Error
console.dir({"name":"test"});//to print object
console.dirxml({"name":"test"});//to print object as xml formate

To Print Error:- console.error('x=%d', x);

console.log("This is the outer level");
console.group();
console.log("Level 2");
console.group();
console.log("Level 3");
console.warn("More of level 3");
console.groupEnd();
console.log("Back to level 2");
console.groupEnd();
console.log("Back to the outer level");


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;");




debugging