Y a-t-il un moyen d'éteindre toutes les console.log
dans mon code JavaScript, à des fins de test ?
Réponses
Trop de publicités?Redéfinissez la fonction console.log dans votre script.
console.log = function() {}
C'est tout, plus de messages sur la console.
EDIT :
Développant l'idée de Cide. Un logger personnalisé que vous pouvez utiliser pour activer/désactiver la journalisation à partir de votre code.
Depuis ma console Firefox :
var logger = function()
{
var oldConsoleLog = null;
var pub = {};
pub.enableLogger = function enableLogger()
{
if(oldConsoleLog == null)
return;
window['console']['log'] = oldConsoleLog;
};
pub.disableLogger = function disableLogger()
{
oldConsoleLog = console.log;
window['console']['log'] = function() {};
};
return pub;
}();
$(document).ready(
function()
{
console.log('hello');
logger.disableLogger();
console.log('hi', 'hiya');
console.log('this wont show up in console');
logger.enableLogger();
console.log('This will show up!');
}
);
Comment utiliser le "logger" ci-dessus ? Dans votre événement ready, appelez logger.disableLogger pour que les messages de la console ne soient pas enregistrés. Ajoutez les appels à logger.enableLogger et logger.disableLogger à l'intérieur de la méthode pour laquelle vous voulez enregistrer les messages sur la console.
Le texte suivant est plus complet :
var DEBUG = false;
if(!DEBUG){
if(!window.console) window.console = {};
var methods = ["log", "debug", "warn", "info"];
for(var i=0;i<methods.length;i++){
console[methods[i]] = function(){};
}
}
Cela mettra à zéro les méthodes communes dans la console si elle existe, et elles peuvent être appelées sans erreur et pratiquement sans surcharge de performance. Dans le cas d'un navigateur comme IE6 sans console, les méthodes factices seront créées pour éviter les erreurs. Bien sûr, il existe de nombreuses autres fonctions dans Firebug, comme trace, profile, time, etc. Elles peuvent être ajoutées à la liste si vous les utilisez dans votre code.
Vous pouvez également vérifier si le débogueur dispose de ces méthodes spéciales ou non (par exemple, IE) et supprimer celles qu'il ne prend pas en charge :
if(window.console && !console.dir){
var methods = ["dir", "dirxml", "trace", "profile"]; //etc etc
for(var i=0;i<methods.length;i++){
console[methods[i]] = function(){};
}
}
D'après ce que je peux dire de la documentation Firebug ne fournit pas de variable permettant de changer l'état de débogage. Au lieu de cela, enveloppez console.log() dans un wrapper qui l'appelle de manière conditionnelle, c'est-à-dire :
DEBUG = true; // set to false to disable debugging
function debug_log() {
if ( DEBUG ) {
console.log.apply(this, arguments);
}
}
Pour ne pas avoir à modifier tous les appels existants, vous pouvez utiliser ceci à la place :
DEBUG = true; // set to false to disable debugging
old_console_log = console.log;
console.log = function() {
if ( DEBUG ) {
old_console_log.apply(this, arguments);
}
}
Je sais que vous avez demandé comment désactiver console.log, mais c'est peut-être ce que vous cherchez vraiment. De cette façon, vous n'avez pas besoin d'activer ou de désactiver explicitement la console. Elle permet simplement d'éviter les erreurs de console pour les personnes qui ne l'ont pas ouverte ou installée.
if(typeof(console) === 'undefined') {
var console = {};
console.log = console.error = console.info = console.debug = console.warn = console.trace = console.dir = console.dirxml = console.group = console.groupEnd = console.time = console.timeEnd = console.assert = console.profile = function() {};
}