Próbuję się dowiedzieć, jak działa aplikacja. I do tego wstawiam polecenia debugowania jako pierwszy wiersz ciała każdej funkcji w celu zarejestrowania nazwy funkcji, a także numeru linii (w ramach kodu), w której wysyłam komunikat do wyjścia logu. Wreszcie, ponieważ ta aplikacja zawiera wiele plików, chcę utworzyć pojedynczy plik dziennika, aby lepiej zrozumieć przepływ sterowania aplikacji.Logowanie w języku Python (nazwa funkcji, nazwa pliku, numer wiersza) przy użyciu pojedynczego pliku
Oto, co wiem:
uzyskania nazwy funkcji, można użyć
function_name.__name__
ale nie chcę używać nazwa_funkcji (tak, że mogę szybko skopiować i wkleić w rodzajoweLog.info("Message")
Ciało wszystkich funkcji). Wiem, że można to zrobić w C przy użyciu makra__func__
, ale nie jestem pewien co do pythona.uzyskania nazwę pliku i numer linii, widziałem, że (i wierzę, że) Moja aplikacja jest przy użyciu Python
locals()
funkcji ale w składni, że nie jestem całkowicie świadom npoptions = "LOG.debug('%(flag)s : %(flag_get)s' % locals())
i próbowałem go przy jakLOG.info("My message %s" % locals())
, który produkuje coś takiego jak{'self': <__main__.Class_name object at 0x22f8cd0>}
. Jakieś dane wejściowe na ten temat proszę?W jaki sposób korzystać z rejestrowania i dodawać do niego procedurę obsługi, aby zalogować się do pliku, ale nie jestem pewien, czy można użyć pojedynczego pliku do rejestrowania wszystkich komunikatów dziennika w prawidłowej kolejności wywołań funkcji w projekcie.
Byłbym wdzięczny za każdą pomoc.
Dzięki!
Możesz wkroczyć do debugera Pythona używając 'import pdb; pdb.set_trace() ', a następnie interaktywnie przejść przez kod. To może pomóc w prześledzeniu przebiegu programu. –
Świetny pomysł! Dzięki Matt. Pomocne byłoby uzyskanie logu, o którym mowa w pytaniu, aby nie musieć debugować za każdym razem. Również znasz IDE dla Pythona, który jest tak dobry jak Eclipse dla Java (ctrl + click przenosi cię do definicji funkcji), z którego mogę skorzystać, aby ułatwić debugowanie? – user1126425