Gibt es eine Möglichkeit, alle console.log
Anweisungen in meinem JavaScript-Code zu Testzwecken?
Antworten
Zu viele Anzeigen?Wenn Sie gulp verwenden, dann können Sie este Plugin:
Installieren Sie dieses Plugin mit dem Befehl:
npm install gulp-remove-logging
Als nächstes fügen Sie diese Zeile in Ihre gulpfile ein:
var gulp_remove_logging = require("gulp-remove-logging");
Zum Schluss fügen Sie die Konfigurationseinstellungen (siehe unten) zu Ihrer gulpfile hinzu.
Aufgabe Konfiguration
gulp.task("remove_logging", function() { return gulp.src("src/javascripts/**/*.js") .pipe( gulp_remove_logging() ) .pipe( gulp.dest( "build/javascripts/" ) ); });
Ich denke, dass die einfachste und verständlichste Methode im Jahr 2020 darin besteht, einfach eine globale Funktion wie log()
und Sie können eine der folgenden Methoden wählen:
const debugging = true;
function log(toLog) {
if (debugging) {
console.log(toLog);
}
}
function log(toLog) {
if (true) { // You could manually change it (Annoying, though)
console.log(toLog);
}
}
Man könnte sagen, dass der Nachteil dieser Funktionen darin besteht, dass:
- Sie rufen die Funktionen immer noch zur Laufzeit auf
- Sie müssen daran denken, die
debugging
Variable oder die if-Anweisung in der zweiten Option - Sie müssen sicherstellen, dass Sie die Funktion vor allen anderen Dateien geladen haben
Und ich erwidere auf diese Aussagen, dass dies die einzige Methode ist, mit der sich das Problem nicht vollständig lösen lässt. console
o console.log
Funktion, was ich für eine schlechte Programmierung halte, da andere Entwickler, die an der Website arbeiten, erkennen müssten, dass Sie sie unwissentlich entfernt haben. Außerdem kann man den JavaScript-Quellcode nicht in JavaScript bearbeiten. Wenn Sie also wirklich wollen, dass alle diese Funktionen aus dem Code entfernt werden, können Sie einen Minifier verwenden, der Ihren Code verkleinert und alle console.log
s. Jetzt haben Sie die Wahl, was werden Sie tun?
Ich schrieb eine ES2015 Lösung (nur in Verbindung mit Webpack ).
class logger {
static isEnabled = true;
static enable () {
if(this.constructor.isEnabled === true){ return; }
this.constructor.isEnabled = true;
}
static disable () {
if(this.constructor.isEnabled === false){ return; }
this.constructor.isEnabled = false;
}
static log () {
if(this.constructor.isEnabled === false ) { return; }
const copy = [].slice.call(arguments);
window['console']['log'].apply(this, copy);
}
static warn () {
if(this.constructor.isEnabled === false ) { return; }
const copy = [].slice.call(arguments);
window['console']['warn'].apply(this, copy);
}
static error () {
if(this.constructor.isEnabled === false ) { return; }
const copy = [].slice.call(arguments);
window['console']['error'].apply(this, copy);
}
}
Beschreibung:
- Neben logger.enable und logger.disable können Sie auch die Methoden console.['log','warn','error'] mit der Klasse logger verwenden.
- Durch die Verwendung der Logger-Klasse zum Anzeigen, Aktivieren oder Deaktivieren von Meldungen wird der Code viel sauberer und wartbar.
- Der folgende Code zeigt Ihnen, wie Sie die Logger-Klasse verwenden können:
logger.disable()
- alle Konsolenmeldungen deaktivierenlogger.enable()
- alle Konsolenmeldungen aktivierenlogger.log('message1', 'message2')
- funktioniert genau wie console.log.logger.warn('message1', 'message2')
- funktioniert genau wie console.warn.logger.error('message1', 'message2')
- funktioniert genau wie console.error. Fröhliches Codieren
Nachdem ich etwas Forschung und Entwicklung für dieses Problem gemacht habe, bin ich auf diese Lösung gestoßen, die Warnungen/Fehler/Protokolle nach Ihrer Wahl ausblendet.
(function () {
var origOpen = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function () {
console.warn = function () { };
window['console']['warn'] = function () { };
this.addEventListener('load', function () {
console.warn('Something bad happened.');
window['console']['warn'] = function () { };
});
};
})();
Fügen Sie diesen Code vor dem JQuery-Plugin (z.B. /../jquery.min.js) ein, auch wenn es sich um JavaScript-Code handelt, der JQuery nicht benötigt. Denn einige Warnungen sind in JQuery selbst.
Danke!