Alle Methodenaufrufe in einer Rails-App protokollieren

8

Gibt es eine einfache Möglichkeit, alle Methodenaufrufe in einer Rails-App zu protokollieren?

Meine hauptsächliche Verwendung dafür wäre im Testen (und im Debugging-Test). Ich möchte mehr von einem Verlauf haben, als ein Stacktrace bietet (zB wenn rspec mit der Option '-b' ausgeführt wird).

    
dafmetal 13.08.2011, 14:06
quelle

3 Antworten

18

Es ist einfach zu machen. Füge einfach 5 Zeilen Code in dein Skript / Server ein:

%Vor%

Es ist in Ссылка

beschrieben

Ihre Anwendung wird sehr langsam und Sie können mehr ausgeben, als Sie möchten. Sie können problemlos weitere Bedingungen für Datei- / Klassen- / Funktionsnamen hinzufügen, um das Drucken unerwünschter Inhalte zu vermeiden.

    
Uwe Geuder 13.08.2011, 21:30
quelle
3

Perftools könnte Ihnen das geben, wonach Sie suchen. Es analysiert den gesamten Prozess und kann Ihnen eine grafische Ansicht geben, die etwas so aussieht . Rack-Perftools-Profiler ist ein Rubygem, das perftools verwendet und es einfach macht, es in eine Rails-Anwendung zu integrieren. Daher würde ich empfehlen, mitzugehen dass, wenn Sie es versuchen möchten.

    
Peter Brown 13.08.2011 17:06
quelle
-3

Erstens ist Stacktrace jeder Methodenaufruf, der zu dem Zeitpunkt auf dem Stack war, an dem ein Fehler auftrat. Welche andere Historie könnte Sie zusätzlich haben?

Zweitens: Um Ihre Frage zu beantworten, gibt es keinen einfachen Weg, alle Methodenaufrufe zu protokollieren. Sie könnten Ihre Log-Ebene bis zum Debuggen aufstocken, was Ihnen mehr Sachen in den Logs geben sollte, aber dies sind nur Dinge, die jemand tatsächlich ausgewählt hat, um zu protokollieren, unabhängig von Methodenaufrufen.

Es wäre wahrscheinlich nicht so schwierig, ruby ​​so zu patchern, dass jeder Methodenaufruf vor und nach der Ausführung der Methode einige Log-Anweisungen ausgibt, aber das ist wiederum ähnlich zu dem, was Ihnen eine Stack-Trace sowieso geben würde und möglicherweise weniger, da Sie keine Zeilennummern usw. erhalten.

Wenn Sie mehr Informationen als den Stack-Trace haben möchten, ist Logging die Art und Weise, wie die meisten Leute es tun würden.

    
skorks 13.08.2011 15:31
quelle