221 votes

Comment désactiver rapidement et commodément toutes les instructions console.log dans mon code ?

Y a-t-il un moyen d'éteindre toutes les console.log dans mon code JavaScript, à des fins de test ?

374voto

SolutionYogi Points 16697

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.

65voto

mwilcox Points 2091

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(){};
    }
}

25voto

Cide Points 1901

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

12voto

Scott Greenfield Points 1435

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() {};
}

8voto

Chris S Points 32376

Si vous utilisez IE7, la console ne sera pas définie. Une version plus adaptée à IE serait donc la suivante :

if (typeof console == "undefined" || typeof console.log == "undefined") 
{
   var console = { log: function() {} }; 
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X