Existe-t-il un moyen de désactiver toutes les console.log
instructions dans mon code JavaScript, à des fins de test?
javascript
debugging
console
Zack Burt
la source
la source
PICOLOG_LEVEL
(nœud) et il est super petit. Moins de 900 octets minifiés et zippés. Avertissement: je suis l'auteur.console
fonctions. Regardez simplement stapp.space/disable-javascript-console-on-productionRéponses:
Redéfinissez la fonction console.log dans votre script.
Voilà, plus de messages à consoler.
ÉDITER:
Développer l'idée de Cide. Un enregistreur personnalisé que vous pouvez utiliser pour activer / désactiver la connexion à partir de votre code.
Depuis ma console Firefox:
Comment utiliser l'enregistreur ci-dessus? Dans votre événement prêt, appelez logger.disableLogger pour que les messages de la console ne soient pas enregistrés. Ajoutez des appels à logger.enableLogger et logger.disableLogger dans la méthode pour laquelle vous souhaitez consigner des messages sur la console.
la source
console.log
... Pourquoi ne pas simplement avoir une fonction booléenne et conditionnelle pour la journalisation?Ce qui suit est plus approfondi:
Cela supprimera les méthodes courantes de la console si elles existent, et elles peuvent être appelées sans erreur et pratiquement sans surcharge de performances. 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 y a beaucoup plus de fonctions dans Firebug, comme trace, profil, heure, etc. Elles peuvent être ajoutées à la liste si vous les utilisez dans votre code.
Vous pouvez également vérifier si le débogueur possède ou non ces méthodes spéciales (c'est-à-dire IE) et mettre à zéro celles qu'il ne prend pas en charge:
la source
Pour autant que je sache dans la documentation , Firebug ne fournit aucune variable pour basculer l'état de débogage. Au lieu de cela, enveloppez console.log () dans un wrapper qui l'appelle conditionnellement, c'est-à-dire:
Pour ne pas avoir à modifier tous les appels existants, vous pouvez utiliser ceci à la place:
la source
Tu ne devrais pas!
Ce n'est pas une bonne pratique d'écraser des fonctions intégrées. Il n'y a également aucune garantie que vous supprimerez toutes les sorties, les autres bibliothèques que vous utilisez peuvent annuler vos modifications et il existe d'autres fonctions qui peuvent écrire sur la console;
.dir()
,.warning()
,.error()
,.debug()
,.assert()
Etc.Comme certains l'ont suggéré, vous pouvez définir une
DEBUG_MODE
variable et vous connecter de manière conditionnelle. En fonction de la complexité et de la nature de votre code, il peut être judicieux d'écrire votre propre objet / fonction d'enregistreur qui entoure l'objet console et intègre cette capacité. Ce serait le bon endroit pour traiter de l' instrumentation .Cela dit, à des fins de «test», vous pouvez écrire des tests au lieu d'imprimer sur la console. Si vous ne faites aucun test et que ces
console.log()
lignes n'étaient qu'une aide pour écrire votre code, supprimez-les simplement .la source
"other libraries you use may revert your changes"
: si je les désactiveconsole.log
au tout début, ils ne peuvent pas revenir à l'ancienne fonction. Eh bien, ils peuvent réécrire leconsole.log
code source, mais pourquoi?"it may be a good idea to write your own logger object/function that wraps around the console object"
: Je l'ai fait dans le passé et c'est une mauvaise idée. La trace de la sortie de la console fait référence à l'encapsuleur et non à la ligne qui l'invoque, ce qui rend le débogage plus difficile.console.log('Look ma, it reaches this point');
dans votre code, lorsque tout le reste échoue, vous pouvez en effet utiliser l'debugger;
instruction."the code is coupled to that infrastructure"
: le code probablement, mais pas le motif. Si vous créez un modèle de base commun pour vos pages où les fonctions de journalisation sont désactivées, c'est une logique que vous pouvez appliquer partout."the later shouldn't be browser-aware"
: eh bien, vous ne devriez donc pas utiliser JS: PJe me rends compte que c'est un ancien article, mais il apparaît toujours en haut des résultats de Google, alors voici une solution non jQuery plus élégante qui fonctionne dans les derniers Chrome, FF et IE.
la source
Je sais que vous avez demandé comment désactiver console.log, mais c'est peut-être ce que vous recherchez vraiment. De cette façon, vous n'avez pas à activer ou désactiver explicitement la console. Il empêche simplement ces erreurs de console embêtantes pour les personnes qui ne l'ont pas ouvert ou installé.
la source
DEBUG
Modifiez simplement l'indicateur pour remplacer la fonction console.log. Cela devrait faire l'affaire.la source
function myLog(msg) { if (debug) { console.log(msg); } }
Je suis surpris que de toutes ces réponses, personne ne combine:
J'irais pour ça:
la source
Après avoir également recherché ce problème et l'avoir essayé dans mon application cordova, je veux simplement avertir chaque développeur que Windows Phone ne doit pas écraser
car l'application se bloque au démarrage.
Il ne plantera pas si vous développez local si vous êtes chanceux, mais le soumettre en magasin entraînera le crash de l'application.
Écraser
Si tu as besoin de.
Cela fonctionne dans mon application:
la source
Si vous utilisez IE7, la console ne sera pas définie. Une version plus conviviale d'IE serait donc:
la source
C'est un hybride de réponses de SolutionYogi et Chris S. Il maintient les numéros de ligne et le nom de fichier console.log. Exemple jsFiddle .
la source
Si vous utilisez Grunt, vous pouvez ajouter une tâche afin de supprimer / commenter les instructions console.log. Par conséquent, le fichier console.log n'est plus appelé.
https://www.npmjs.org/package/grunt-remove-logging-calls
la source
J'ai utilisé ce qui suit pour régler le problème: -
Définissez le débogage sur 1 pour activer le débogage. Utilisez ensuite la fonction de journalisation lors de la sortie du texte de débogage. Il est également configuré pour accepter deux paramètres.
Donc, au lieu de
utilisation
la source
J'ai utilisé l' enregistreur Winston plus tôt.
Aujourd'hui, j'utilise ci-dessous un code plus simple d'expérience:
Définissez la variable d'environnement à partir de cmd / ligne de commande (sous Windows):
Ou, vous pouvez avoir une variable dans votre code si vous le souhaitez, mais au-dessus c'est mieux.
Redémarrez cmd / ligne de commande, ou, IDE / éditeur comme Netbeans
Avoir ci-dessous comme le code:
Utilisez maintenant toutes les consoles. * Comme ci-dessous:
Maintenant, en fonction de vos paramètres LOG_LEVEL définis au point 1 (comme,
setx LOG_LEVEL log
et redémarrer la ligne de commande), certains des éléments ci-dessus s'impriment, d'autres ne s'impriment pasJ'espère que cela a aidé.
la source
Attention: fiche sans vergogne!
Vous pouvez également utiliser quelque chose comme mon objet JsTrace pour avoir un suivi modulaire avec une capacité de "commutation" au niveau du module pour activer uniquement ce que vous voulez voir à ce moment-là.
http://jstrace.codeplex.com
(A également un package NuGet, pour ceux qui s'en soucient)
Tous les niveaux sont définis par défaut sur "erreur", mais vous pouvez les désactiver "off". Cependant, je ne vois pas pourquoi vous ne voudriez PAS voir d'erreurs
Vous pouvez les changer comme ceci:
Pour plus de documents, consultez la documentation
T
la source
J'ai trouvé un morceau de code un peu plus avancé dans cette URL. Astuce JavaScript: Bust and Disable console.log :
la source
J'ai développé une bibliothèque pour ce cas d'utilisation: https://github.com/sunnykgupta/jsLogger
Fonctionnalités:
log
,warn
,error
,info
.Est ouvert aux modifications et sera mis à jour chaque fois que de nouvelles suggestions émergeront.
la source
Cela devrait remplacer toutes les méthodes de window.console. Vous pouvez le mettre tout en haut de votre section de scripts, et si vous êtes sur un framework PHP, vous ne pouvez imprimer ce code que lorsque votre environnement d'application est en production, ou si une sorte d'indicateur de débogage est désactivée. Ensuite, vous auriez tous vos journaux dans votre code travaillant sur des environnements de développement ou en mode débogage.
la source
J'ai écrit ceci:
Malheureusement, cela ne fonctionne pas en mode strict.
Donc, en utilisant
console.fn.setEnabled = setEnabled
etconsole.fn.setEnabled(false)
oùfn
pourrait être presque n'importe quelle fonction de console. Car votre cas serait:J'ai aussi écrit ceci:
donc il vous suffit de mettre la
FLAGS
valeur par défaut (avant d'exécuter le code ci-dessus), commeFLAGS.LOG = false
et la fonction de journal serait désactivée par défaut, et vous pourriez toujours l'activer en appelantconsole.log.setEnabled(true)
la source
console.log.setEnabled(true)
et commencez à voir les journauxvar debug = false; debug && console.log(1/3)
parce que vous n'avez pas besoin d'évaluer le contenu du journal s'il n'est pas activé (dans ce cas1/3
ne sera pas évalué), ne perdez pas la ligne de l'appelant et pouvez activer facilement aussi (si ne variez pas comme consts).Ma solution complète pour désactiver / remplacer toutes les
console.*
fonctions est ici .Bien sûr, assurez-vous de l'inclure après avoir vérifié le contexte nécessaire. Par exemple, uniquement dans la version de production, il ne bombarde aucun autre composant crucial, etc.
Citant ici:
la source
Si vous utilisez gulp, vous pouvez utiliser ce plugin:
la source
Une simplification de https://stackoverflow.com/a/46189791/871166
la source
Vous pouvez utiliser javascript AOP (par exemple jquery-aop ) pour intercepter tous les appels à console.debug / log (autour) et ne pas procéder à l'appel réel si une variable globale est définie sur false.
Vous pouvez même faire un appel ajax (de temps en temps) afin de pouvoir modifier le comportement de journal activé / désactivé sur le serveur, ce qui peut être très intéressant pour activer le débogage face à un problème dans un environnement de transfert ou autre.
la source
Vous pouvez utiliser logeek , il vous permet de contrôler la visibilité de vos messages de journal. Voici comment procéder:
Vous pouvez également
logeek.show('nothing')
désactiver totalement chaque message de journal.la source
Après avoir fait quelques recherches et développements pour ce problème, je suis tombé sur cette solution qui masquera les avertissements / erreurs / journaux selon votre choix.
Ajoutez ce code avant le plugin JQuery (par exemple /../jquery.min.js) même s'il s'agit d'un code JavaScript qui ne nécessite pas JQuery. Parce que certains avertissements sont dans JQuery lui-même.
Merci!!
la source
J'ai écrit une ES2015 solution (utiliser uniquement avec Webpack ).
La description:
logger.disable()
- désactiver tous les messages de la consolelogger.enable()
- activer tous les messages de la consolelogger.log('message1', 'message2')
- fonctionne exactement comme console.log.logger.warn('message1', 'message2')
- fonctionne exactement comme console.warn.logger.error('message1', 'message2')
- fonctionne exactement comme console.error. Bon codage ..la source