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);
18 réponses
Installer Firebug, puis vous pouvez utiliser console.log(...)
et console.debug(...)
, etc. (voir la documentation pour plus de détails).
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;");
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');
Une bonne façon de le faire qui fonctionne cross-browser est décrite dans débogage JavaScript: jetez vos alertes!.
Si vous utilisez Safari, vous pouvez écrire
console.log("your message here");
Et il apparaît directement sur la console du navigateur.
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.
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.
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.
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...
LeWebKit Web Inspector prend également en charge L'API de la console de Firebug (juste un ajout mineur à la réponse de Dan).
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;
}
}
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
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.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.
La façon La plus simple de le faire est:
console.warn("Text to print on console");
Avec la syntaxe es6, vous pouvez utiliser:
console.log(`x = ${x}`);
Pour répondre à votre question, vous pouvez utiliser les fonctionnalités ES6,
var var=10;
console.log(`var=${var}`);
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");