Python-Protokollierung (Funktionsname, Dateiname, Zeilennummer) mit einer einzigen Datei

| | | | | | | | | | | |

Ich versuche zu lernen, wie eine Anwendung funktioniert. Und dafür füge ich Debug-Befehle als erste Zeile des Hauptteils jeder Funktion ein, mit dem Ziel, den Namen der Funktion sowie die Zeilennummer (innerhalb des Codes) zu protokollieren, wo ich eine Nachricht an die Protokollausgabe sende. Da diese Anwendung aus vielen Dateien besteht, möchte ich schließlich eine einzige Protokolldatei erstellen, damit ich den Kontrollfluss der Anwendung besser verstehen kann.

Hier ist, was ich weiß:

  1. zum Abrufen des Funktionsnamens kann ich function_name.__name__ verwenden, aber ich möchte den function_name nicht verwenden (damit ich schnell ein generisches Log kopieren und einfügen kann .info("Message") im Hauptteil aller Funktionen). Ich weiß, dass dies in C mit dem Makro __func__ möglich ist, aber ich bin mir bei Python nicht sicher.

  2. um den Dateinamen und die Zeilennummer zu erhalten, habe ich gesehen (und ich glaube, dass) meine Anwendung die Python-Funktion locals() verwendet, aber in einer Syntax, die ich bin nicht ganz bewusst zB: options = "LOG.debug("%(flag)s : %(flag_get)s" % locals()) und ich habe es mit LOG.info versucht ("My message %s" % locals()) was so etwas wie {"self": <__main__.Class_name object at 0x22f8cd0>} erzeugt. Irgendwelche Eingaben dazu, bitte?

  3. Ich weiß, wie man die Protokollierung verwendet und einen Handler hinzufügt, um in einer Datei zu protokollieren, aber ich bin mir nicht sicher, ob eine einzelne Datei zum Aufzeichnen verwendet werden kann alle Logmeldungen in der richtigen Reihenfolge der Funktionsaufrufe im Projekt.

Ich würde mich sehr über jede Hilfe freuen.

Danke!