Ich schreibe Logger und habe Probleme mit dem automatischen Hinzufügen des Klassennamens, von dem ich die Methode print_log aufgerufen habe. Zum Beispiel so etwas:
%Vor% Als Ergebnis des Aufrufs von MyClass.new
Methode möchte ich in der Ausgabe sehen:
14:41:23 | MyClass - namens .new () Methode
Ich bin sicher, dass es möglich ist, caller
zu verwenden, aber nicht finden kann, wie
Nachdem du eine Weile mit caller
fertig geworden bist, wird es das wahrscheinlich nicht für dich tun, und auch nicht caller_locations
. Es ist möglich, die Klassen der letzten im aktuellen Thread instanziierten Objekte zu verfolgen, z. B.
Dies behält die Klassen der letzten 10 Objekte bei, aber dies entspricht nicht direkt einer Hierarchie, z. B.
%Vor%X.new gibt Folgendes (in einer Konsolensitzung) aus
%Vor%Ich bin mir nicht sicher, ob es möglich ist, den Klassennamen wie gewünscht zu bekommen. Ich würde dafür eine Logger-Instanz erstellen, in die Sie den Klassennamen beim Erstellen übergeben können.
%Vor%Ausführlicher, als Sie vielleicht möchten, aber expliziter Code, der leicht zu verstehen ist.
Für jede ernste Arbeit empfehle ich den Standard-Bibliothekslogger . Möglicherweise müssen Sie es in Ihren eigenen Aufruf einbinden, um die Protokollmeldungen wie gewünscht zu erhalten, aber Sie erhalten eine rotierende Protokollierung und Dateihandhabung, wie es sein sollte.
Tags und Links ruby