Ich versuche zu lernen, wie eine Anwendung funktioniert. Und dafür füge ich Debug-Befehle als erste Zeile des Funktionskörpers ein, mit dem Ziel, den Namen der Funktion sowie die Zeilennummer (innerhalb des Codes) zu protokollieren, unter der ich eine Nachricht an die Protokollausgabe sende. Da diese Anwendung aus vielen Dateien besteht, möchte ich eine einzelne Protokolldatei erstellen, damit ich den Kontrollfluss der Anwendung besser verstehen kann.
Folgendes weiß ich:
Zum Abrufen des Funktionsnamens kann
function_name.__name__
ich den Funktionsnamen verwenden , möchte ihn jedoch nicht verwenden (damit ich schnell ein Generikum kopieren undLog.info("Message")
in den Hauptteil aller Funktionen einfügen kann). Ich weiß, dass dies in C mit einem__func__
Makro möglich ist, bin mir aber bei Python nicht sicher.Um den Dateinamen und die Zeilennummer zu erhalten, habe ich gesehen, dass (und ich glaube das) meine Anwendung die Python-
locals()
Funktion verwendet, aber in einer Syntax, die mir nicht vollständig bekannt ist, zB:options = "LOG.debug('%(flag)s : %(flag_get)s' % locals())
und ich habe es mit like versucht,LOG.info("My message %s" % locals())
was so etwas erzeugt{'self': <__main__.Class_name object at 0x22f8cd0>}
. Irgendwelche Eingaben dazu bitte?Ich weiß, wie man die Protokollierung verwendet und einen Handler hinzufügt, um in einer Datei zu protokollieren, bin mir jedoch nicht sicher, ob eine einzelne Datei zum Aufzeichnen aller Protokollnachrichten in der richtigen Reihenfolge der Funktionsaufrufe im Projekt verwendet werden kann.
Ich würde mich über jede Hilfe sehr freuen.
Vielen Dank!
import pdb; pdb.set_trace()
und dann den Code interaktiv durchlaufen. Dies kann Ihnen helfen, den Programmfluss zu verfolgen.