Ich habe die Konsolen-API umbrochen, um granulare Protokollierungsebenen sowie einige andere Zuckerfunktionen bereitzustellen.
Das funktioniert gut, das einzige Problem ist, dass Firebug (oder welche andere Konsole) immer die Zeilennummer meldet, von der das Protokoll kam, da die Konsole selbst aufgerufen wird.
Wie empfehlen Sie, dass die Konsole die Zeilennummer protokolliert, unter der ich meine Wrapper-Funktion aufruft?
Ich würde eine Cross-Browser-Lösung bevorzugen, aber wenn das nicht gelingt, könnte ein Firebug-Plugin ein guter Anfang sein.
fyi Ich rufe meine Logging-Funktion so auf:
%Vor%So kam das vor kurzem wieder und so entschied ich mich, es noch einmal zu besuchen.
Jetzt bin ich älter und klüger, mir ist klar, dass es eine viel bessere Lösung ist als das, was ich versucht habe, die Konsolenfunktionen so zu benennen, wie sie sind, aber sie selektiv durch Dummy-Funktionen zu ersetzen, wenn das Level heruntergefahren wird. Dies gibt mir eine feinkörnige Protokollierung und eine genaue Zeilennummernmeldung. Ein paar Features sind von meiner vorherigen Lösung verloren gegangen, aber ich denke, das ist ein akzeptabler Kompromiss.
Hier ist ein Teilschnitt meiner neuen Logging-Bibliothek, die die Hauptlösung zeigt
%Vor%Sie können das vollständige Ding hier sehen: Ссылка
Interessantes Problem ... Ich habe vielleicht einen Hack für dich. Ich kann das jetzt nicht testen, aber ich denke, es könnte funktionieren.
Wir wissen, dass ein normaler Funktionsaufruf nicht funktionieren wird, also habe ich über #defines in C und Makros in verschiedenen anderen Sprachen nachgedacht. Leider hat Javascript das nicht, aber funktioniert vielleicht ein eval
hack . Ich erwarte, dass eval
den Code so ausführt, als käme er aus derselben Zeile - wenn nicht, bläh, ignoriere den Rest dieser Antwort.
Meine Methode funktioniert so:
eval
(yes, ew) console.log
und eine benutzerdefinierte Nachricht zurückgeben. Es sollte ungefähr so aussehen:
%Vor%Sie sollten es so nennen können:
%Vor%In der Regel werden mit den Funktionen debug () oder error () anstelle von log () Zeilennummern angezeigt. Ich glaube, die Google Chrome-Konsole funktioniert ähnlich. ( Firebug-Referenz )
Hier sind zwei Möglichkeiten, die Protokollierung zu umbrechen, ohne den Kontext zu verlieren. Der erste ist ein bisschen hässlich von der Seite des Anrufers. Die zweite ist nur verwendbar, wenn Sie nicht die Details dessen, was protokolliert wurde, benötigen.
Sehen Sie sich das JSFiddle für eine Demo an: Ссылка
%Vor%Tags und Links javascript firebug logging console line-numbers