JavaScript: comment imprimer un message dans la console d'erreur?

Comment puis-je imprimer un message sur la console d'erreur, de préférence en incluant une variable?

Par exemple, quelque chose comme:

print('x=%d', x);
421
demandé sur Peter Mortensen 2008-10-03 00:23:55

18 réponses

Installer Firebug, puis vous pouvez utiliser console.log(...) et console.debug(...), etc. (voir la documentation pour plus de détails).

452
répondu 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

Vous pouvez également ajouter CSS à vos messages de journalisation:

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

Les Exceptions sont enregistrées dans la console JavaScript. Vous pouvez l'utiliser si vous voulez garder Firebug désactivé.

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

Utilisation:

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

Une bonne façon de le faire qui fonctionne cross-browser est décrite dans débogage JavaScript: jetez vos alertes!.

55
répondu Ian Oxley 2012-07-12 17:24:53

Si vous utilisez Safari, vous pouvez écrire

console.log("your message here");

Et il apparaît directement sur la console du navigateur.

15
répondu Lukas 2012-03-12 09:17:09

Voici une solution à la question littérale de savoir comment imprimer un message sur la console d'erreur du navigateur, pas sur la console du débogueur. (Il peut y avoir de bonnes raisons de contourner le débogueur.)

Comme je l'ai noté dans les commentaires sur la suggestion de lancer une erreur pour obtenir un message dans la console d'erreur, un problème est que cela interrompt le thread d'exécution. Si vous ne voulez pas interrompre le thread, vous pouvez lancer l'erreur dans un thread séparé, créé à l'aide de setTimeout. D'où mon solution (qui s'avère être une élaboration de celle par 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');

J'inclus l'heure en millisecondes depuis l'Heure de début car le délai d'attente pourrait biaiser l'ordre dans lequel vous pourriez vous attendre à voir les messages.

Le deuxième argument de la méthode Error est pour le nom de fichier, qui est une chaîne vide ici pour empêcher la sortie du nom de fichier et du numéro de ligne inutiles. Il est possible d'obtenir la fonction de l'appelant, mais pas d'une manière indépendante du navigateur simple.

Ce serait bien si nous pouvions afficher le message avec une icône d'avertissement ou de message au lieu de l'icône d'erreur, mais je ne peux pas trouver un moyen de le faire.

Un autre problème avec l'utilisation du lancer est qu'il pourrait être attrapé et jeté par un try-catch englobant, et mettre le lancer dans un thread séparé évite également cet obstacle. Cependant, il y a encore une autre façon que l'erreur pourrait être détectée, qui est si la fenêtre.onerror gestionnaire est remplacé par un qui fait quelque chose de différent. Ne peut pas vous aider là-bas.

14
répondu dlaliberte 2011-02-10 14:50:58

Pour répondre réellement à la question:

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

Au lieu d'erreur, vous pouvez également utiliser info, log ou warn.

9
répondu Yster 2014-03-26 15:14:26

Si vous utilisez Firebug et que vous devez également prendre en charge IE, Safari ou Opera, Firebug Lite ajoute la console.log() soutien à ces navigateurs.

8
répondu Devon 2008-10-02 20:52:12

Une note sur' throw () ' mentionnée ci-dessus. Il semble qu'il arrête complètement l'exécution de la page (j'ai vérifié dans IE8), donc ce n'est pas très utile pour la journalisation des "processus en cours" (comme pour suivre une certaine variable...)

Ma suggestion est peut-être d'ajouter un élémenttextarea quelque part dans votre document et de changer (ou d'ajouter) sa valeur (qui changerait son texte) pour les informations de journalisation chaque fois que nécessaire...

5
répondu Yuval A. 2010-11-29 17:20:21

LeWebKit Web Inspector prend également en charge L'API de la console de Firebug (juste un ajout mineur à la réponse de Dan).

5
répondu olliej 2017-05-23 11:47:20

Comme toujours, Internet Explorer est le grand éléphant dans rollerskates qui vous arrête tout simplement en utilisant console.log().

Le Journal de JQuery peut être adapté assez facilement, mais il est difficile de l'ajouter partout. Une solution si vous utilisez jQuery est de le mettre dans votre fichier jQuery à la fin, minifié en premier:

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
répondu Chris S 2012-07-12 17:31:26

Visite https://developer.chrome.com/devtools/docs/console-api pour une référence complète de l'api de la console

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

Dans ce cas, l'objet serait votre chaîne d'erreur

4
répondu 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
répondu Parth Raval 2018-06-12 13:22:36
console.log("your message here");

Travailler pour moi.. je suis à la recherche de ce.. J'ai utilisé Firefox. voici mon Script.

 $('document').ready(function() {
console.log('all images are loaded');
});

Fonctionne dans Firefox et Chrome.

1
répondu D.K 2014-02-01 11:56:35

La façon La plus simple de le faire est:

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

Avec la syntaxe es6, vous pouvez utiliser:

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

Pour répondre à votre question, vous pouvez utiliser les fonctionnalités ES6,

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

Cela ne s'imprime pas sur la Console, mais vous ouvrira une fenêtre d'alerte avec votre message qui pourrait être utile pour un débogage:

Il suffit de faire:

alert("message");
-1
répondu mmm 2013-10-23 14:25:52