JavaScript: como imprimo uma mensagem para a consola de erros?

Como posso imprimir uma mensagem para a consola de erros, de preferência incluindo uma variável?

Por exemplo, algo como:
print('x=%d', x);
Author: Peter Mortensen, 2008-10-03

18 answers

Instale Firebug e depois pode usar console.log(...) e console.debug(...), etc. (ver a documentação para mais informações).

 452
Author: Dan, 2012-08-20 04:59:43
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

Também pode adicionar CSS às suas mensagens de Registo:

console.log('%c My message here', "background: blue; color: black; padding-left:10px;");
 288
Author: Nicholas, 2015-04-23 08:52:08

As excepções estão ligadas à consola de JavaScript. Pode usá-lo se quiser manter o Firebug desactivado.

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

Utilização:

log('Hello World');
log('another message');
 83
Author: Ivo Danihelka, 2013-12-02 04:17:10

Uma boa maneira de fazer isso que funciona cross-browser é delineada em depuração do JavaScript: deite fora os seus alertas!.

 55
Author: Ian Oxley, 2012-07-12 17:24:53

Se utilizar Safari , pode escrever

console.log("your message here");

E aparece na consola do navegador.

 15
Author: Lukas, 2012-03-12 09:17:09

Aqui está uma solução para a questão literal de como imprimir uma mensagem para a consola de erros do navegador, não para a consola do depurador. (Pode haver boas razões para contornar o depurador.)

Como eu observei em comentários sobre a sugestão de lançar um erro para obter uma mensagem na consola de erros, um problema é que isto irá interromper o tópico de execução. Se você não quiser interromper o tópico, você pode jogar o erro em um tópico separado, um criado usando setTimeout. Assim a minha solução (que acaba por ser uma elaboração da 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');

Incluo o tempo em milisegundos desde a hora de início porque o tempo-limite pode distorcer a ordem na qual você pode esperar ver as mensagens.

O segundo argumento do método de erro é para o nome do ficheiro, que é um texto vazio aqui para evitar a saída do nome de ficheiro e número de linha inúteis. É possível obter a função de chamador, mas não de uma forma simples navegador independente.

Seria bom se pudéssemos mostrar a mensagem com um ícone de aviso ou mensagem em vez do ícone de erro, mas não consigo encontrar uma maneira de fazer isso.

Outro problema com o uso do arremesso é que ele pode ser pego e jogado fora por uma tentativa de captura, e colocar o arremesso em um fio separado evita esse obstáculo também. No entanto, há ainda outra maneira de o erro pode ser pego, que é se a janela.OnError handler é substituído por um que faz algo diferente. Não te posso ajudar.

 14
Author: dlaliberte, 2011-02-10 14:50:58

Para responder realmente à pergunta:

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

Em vez de erro, também pode usar informação, registo ou aviso.

 9
Author: Yster, 2014-03-26 15:14:26

Se estiver a utilizar Firebug e necessitar de suportar IE, Safari ou Opera também, Firebug Lite adiciona consola.log () suporte a estes navegadores.

 8
Author: Devon, 2008-10-02 20:52:12

Uma nota sobre' throw () ' mencionada acima. Parece que ele pára a execução da página completamente (eu verifiquei em IE8), por isso não é muito útil para o registro "em processos em andamento" (como rastrear uma certa variável...)

A minha sugestão é talvez adicionar um elemento textarea algures no seu documento e alterar (ou adicionar a) o seu valor (o que alteraria o seu texto) para registar a informação sempre que necessário...

 5
Author: Yuval A., 2010-11-29 17:20:21

O Webkit Web Inspector também suporta Firebug's console API (apenas uma pequena adição à resposta Dan).

 5
Author: olliej, 2017-05-23 11:47:20

Como sempre, o Internet Explorer é o grande elefante em patins que nos impede simplesmente de usar {[[1]}.

O Diário de JQuery {[[7]} pode ser adaptado muito facilmente, mas é uma dor ter que adicioná-lo em todos os lugares. Uma solução se você estiver usando jQuery é colocá-lo no seu arquivo jQuery no final, minificado primeiro:

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;
    }
}
 5
Author: Chris S, 2012-07-12 17:31:26

Visita https://developer.chrome.com/devtools/docs/console-api para uma referência completa da api da consola

    console.error(object[Obj,....])\

Neste caso, o objecto seria o seu texto de erro

 4
Author: devSouth555, 2015-05-21 14:37:51

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");
 3
Author: Parth Raval, 2018-06-12 13:22:36
console.log("your message here");
A trabalhar para mim.. estou à procura disto.. usei Firefox. aqui está o meu guião.
 $('document').ready(function() {
console.log('all images are loaded');
});
Trabalha no Firefox e no cromado.
 1
Author: D.K, 2014-02-01 11:56:35

A maneira mais simples de fazer isto é:

console.warn("Text to print on console");
 1
Author: Kenneth John Falbous, 2016-11-19 11:06:30

Com a sintaxe es6 pode usar:

console.log(`x = ${x}`);
 0
Author: jkordas, 2017-12-20 10:17:28

Para responder à sua pergunta pode usar as funcionalidades do ES6,

var var=10;
console.log(`var=${var}`);
 0
Author: Aniket Kulkarni, 2018-06-12 13:24:11

Isto não imprime na consola, mas irá abrir-lhe uma janela de alerta com a sua mensagem que poderá ser útil para alguma depuração:

Faz apenas:

alert("message");
 -1
Author: mmm, 2013-10-23 14:25:52