Ich versuche zu lernen, wie eine Anwendung funktioniert. Und dazu füge ich debug-Befehle als erste Zeile in den Body jeder Funktion ein mit dem Ziel, den Namen der Funktion sowie die Zeilennummer (innerhalb des Codes) zu protokollieren, wo ich eine Nachricht an die Log-Ausgabe sende. Da diese Anwendung viele Dateien umfasst, möchte ich schließlich eine einzelne Protokolldatei erstellen, damit ich den Kontrollfluss der Anwendung besser verstehen kann. HierPython Logging (Funktionsname, Dateiname, Zeilennummer) mit einer einzigen Datei
ist, was ich weiß:
für Funktionsnamen bekommen, kann ich
function_name.__name__
verwenden, aber ich will nicht die function_name verwenden (so dass ich schnell kopieren könnte, und fügen Sie eine generischeLog.info("Message")
in der Körper aller Funktionen). Ich weiß, das könnte in C mit__func__
Makro getan werden, aber ich bin mir nicht sicher über Python.für die Dateinamen und die Zeilennummer bekommen, ich habe gesehen (und ich glaube, dass) meine Anwendung
locals()
Funktion Python verwenden, aber in einer Syntax, die ich nicht ganz von zB bewusst bin:options = "LOG.debug('%(flag)s : %(flag_get)s' % locals())
und ich versuchte, es zu benutzen wieLOG.info("My message %s" % locals())
, die etwas wie{'self': <__main__.Class_name object at 0x22f8cd0>}
produziert. Irgendwelche Eingaben bitte?Ich weiß, wie Logging und fügen Sie Handler, um es in eine Datei zu loggen, aber ich bin nicht sicher, ob eine einzige Datei verwendet werden kann, um alle Protokollnachrichten in der richtigen Reihenfolge der Funktionsaufrufe im Projekt aufzuzeichnen.
Ich würde jede Hilfe sehr schätzen.
Danke!
Sie können den Python-Debugger mit 'import pdb; pdb.set_trace() ', und interaktiv durch den Code gehen. Dadurch können Sie den Programmablauf verfolgen. –
Tolle Idee! Danke, Matt. Es wäre immer noch hilfreich, ein Protokoll wie in der Frage erwähnt zu bekommen, so dass ich nicht jedes Mal debuggen muss. Kennen Sie auch eine IDE für Python, die so gut wie Eclipse für Java ist (Strg + Klick bringt Sie zur Funktionsdefinition), die ich verwenden kann, um Debugging einfacher zu machen? – user1126425