Próbuję się dowiedzieć, jak działa aplikacja. W tym celu wstawiam polecenia debugowania jako pierwszy wiersz treści każdej funkcji w celu zarejestrowania nazwy funkcji, a także numeru wiersza (w kodzie), w którym wysyłam wiadomość do wyjścia dziennika. Wreszcie, ponieważ ta aplikacja składa się z wielu plików, chcę utworzyć pojedynczy plik dziennika, aby lepiej zrozumieć przepływ sterowania w aplikacji.
Oto co wiem:
aby uzyskać nazwę funkcji, mogę użyć,
function_name.__name__
ale nie chcę używać funkcji nazwa_funkcji (aby móc szybko skopiować i wkleić rodzaj ogólnyLog.info("Message")
w treści wszystkich funkcji). Wiem, że można to zrobić w C przy użyciu__func__
makra, ale nie jestem pewien co do Pythona.aby uzyskać nazwę pliku i numer linii, widziałem, że (i uważam, że) moja aplikacja używa
locals()
funkcji Pythona, ale w składni, której nie jestem do końca świadomy, np.:options = "LOG.debug('%(flag)s : %(flag_get)s' % locals())
i próbowałem użyćLOG.info("My message %s" % locals())
czegoś podobnego, który daje coś podobnego{'self': <__main__.Class_name object at 0x22f8cd0>}
. Jakieś uwagi w tej sprawie?Wiem, jak używać rejestrowania i dodawać do niego program obsługi, aby logować się do pliku, ale nie jestem pewien, czy pojedynczy plik może być użyty do zapisania wszystkich komunikatów dziennika we właściwej kolejności wywołań funkcji w projekcie.
Byłbym bardzo wdzięczny za każdą pomoc.
Dzięki!
import pdb; pdb.set_trace()
przejść do debugera języka Python za pomocą , a następnie interaktywnie przechodzić przez kod. Może to pomóc w śledzeniu przepływu programu.