js-debug-output

Mir reichts. Inzwischen habe ich zehntausende Zeilen Javascript geschrieben, in die ganz fein consolen-Output für firebug verwoben sind. Immer schon nehme ich mir vor, das irgendwie intelligent zum Launch des jweiligen Projekts abzuschalten – immer bleibt es bei diesem Vorhaben.

Heute nun habe ich ganz schnell einen Konsolen-Wrapper gebastelt, der sich ganz leicht ausschalten, auf weitere Browser erweitern und vor allem dem jeweils aktuellen firebug anpassen lässt. Er funktioniert ganz einfach, man schreibt einfach an Stelle von console.log() nun _debug.log(). Hier nun die pre-alpha-Version:

var _debug = {
    output: true,
    getArguments: function (args){
        var arr = [];
        for (var i = 0; i < args.length; i++) {
            arr[i] = args[i];
        }
        return arr;
    },
    info: function() {
        this.write("info", this.getArguments(arguments));
    },
    log: function() {
        this.write("log", this.getArguments(arguments));
    },
    warn: function() {
        this.write("warn", this.getArguments(arguments));
    },
    error: function() {
        this.write("error", this.getArguments(arguments));
    },
    debug: function() {
        this.write("debug", this.getArguments(arguments));
    },
    write: function(level, args) {
      if (this.output && typeof(console)==="object")
        console[level].apply(this, args);
      else if (window.console)
		window.console.log(level + ":" + args);
      else if (level==="error")
        alert(args);
	}
};

Setzt man _debug.output = false, schweigt die Konsole. Ein ganz simples Objekt, das für sich genommen nichts Besonderes ist. Flashman hat aber einen genialen js-Collector in php geschrieben, der meine dutzende js-Skripte zu einem verschweißt, das Caching organisiert und die Möglichkeit bietet, serverseitig Variablen im Javascript zu setzen. Somit kann ich zentral an einer Stelle für das gesamte Portal Konsolen-Output abschalten – oder IP-gebunden an.
Einfach.
Cool.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s