Ich bin damit einverstanden, dass der Konsolenstub ein guter Ansatz ist. Ich habe verschiedene Konsolen-Plugins und Code-Snippets ausprobiert, darunter einige ziemlich komplexe. Sie alle hatten ein Problem in mindestens einem Browser, so dass ich mich für etwas Einfaches wie das Folgende entschieden habe. Dies ist eine Zusammenführung anderer Ausschnitte, die ich gesehen habe, und einiger Vorschläge des YUI-Teams. Es scheint in IE8 +, Firefox, Chrome und Safari (für Windows) zu funktionieren.
var debugMode = false;
var log = function (msg) {
debugMode && window.console && console.log ? console.log(msg) : null;
};
Hinweis: Es unterstützt das Deaktivieren der Protokollierung an der Konsole über ein Flag. Vielleicht können Sie dies auch über Build-Skripte automatisieren. Alternativ können Sie die Benutzeroberfläche oder einen anderen Mechanismus verfügbar machen, um dieses Flag zur Laufzeit umzudrehen. Mit Protokollierungsstufen und Ajax-Übermittlung von Protokollen basierend auf dem Protokollschwellenwert können Sie natürlich viel ausgefeilter werden (z. B. werden alle Anweisungen zur Fehlerstufe zur Speicherung an den Server übertragen usw.).
Viele dieser Threads / Fragen zur Protokollierung scheinen Protokollanweisungen als Debug-Code und nicht als Code- Instrumentierung zu betrachten . Daher der Wunsch, die log-Anweisungen zu entfernen. Die Instrumentierung ist äußerst nützlich, wenn sich eine Anwendung in der Natur befindet und es nicht mehr so einfach ist, einen Debugger anzuhängen, oder wenn Informationen von einem Benutzer oder über den Support an Sie gesendet werden. Sie sollten niemals sensible Daten protokollieren, unabhängig davon, wo sie protokolliert wurden, damit Datenschutz und Sicherheit nicht beeinträchtigt werden. Wenn Sie sich die Protokollierung als Instrumentierung vorstellen, wird sie jetzt zum Produktionscode und sollte nach demselben Standard geschrieben werden.
Bei Anwendungen mit immer komplexerem Javascript halte ich die Instrumentierung für kritisch.