Zugriff auf Zeilennummern beim Umhüllen von Firebug (oder ähnlichem) Console api

9

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%     
Ollie Edwards 26.07.2010, 15:28
quelle

5 Antworten

0

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: Ссылка

    
Ollie Edwards 30.08.2012, 14:30
quelle
3

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:

  1. Ändern Sie die Funktion db.log so, dass sie auf eval (yes, ew)
  2. zeigt
  3. Anstatt Ihre LogLevels als Argument zu übergeben, erstellen Sie für jede Funktion Funktionen, die eine Zeichenfolge mit console.log und eine benutzerdefinierte Nachricht zurückgeben.

Es sollte ungefähr so ​​aussehen:

%Vor%

Sie sollten es so nennen können:

%Vor%     
David Tang 13.12.2010 03:08
quelle
1
%Vor%     
osexp2003 09.05.2013 16:08
quelle
0

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 )

    
Anthony Corbelli 05.11.2010 21:26
quelle
0

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%     
Oleg Lokhvitsky 13.08.2013 22:31
quelle