Bir uygulamanın nasıl çalıştığını öğrenmeye çalışıyorum. Ve bunun için, günlük çıktısına bir mesaj gönderdiğim satır numarasını (kod içinde) yanı sıra işlevin adını da günlüğe kaydetme amacıyla her işlevin gövdesinin ilk satırı olarak hata ayıklama komutlarını ekliyorum. Son olarak, bu uygulama birçok dosyadan oluştuğundan, uygulamanın kontrol akışını daha iyi anlayabilmek için tek bir günlük dosyası oluşturmak istiyorum.
İşte bildiğim şey:
işlev adını almak için kullanabilirim,
function_name.__name__
ancak işlev_adı kullanmak istemiyorum (böyleceLog.info("Message")
tüm işlevlerin gövdesine bir jeneriği hızlı bir şekilde kopyalayıp yapıştırabilirim ). Bunun__func__
makro kullanılarak C'de yapılabileceğini biliyorum ama python konusunda emin değilim.dosya adını ve satır numarasını elde etmek için, uygulamamın Python
locals()
işlevini kullandığını gördüm (ve buna inanıyorum), ancak tam olarak farkında olmadığım bir sözdiziminde, örneğin:options = "LOG.debug('%(flag)s : %(flag_get)s' % locals())
ve bunuLOG.info("My message %s" % locals())
hangisinin benzeri bir şey üretir gibi kullanmayı denedim{'self': <__main__.Class_name object at 0x22f8cd0>}
. Bununla ilgili herhangi bir girdi lütfen?Günlüğe kaydetmeyi nasıl kullanacağımı ve bir dosyaya oturum açmak için ona işleyici eklemeyi biliyorum, ancak tüm günlük mesajlarını projedeki işlev çağrılarının doğru sırasına göre kaydetmek için tek bir dosyanın kullanılıp kullanılamayacağından emin değilim.
Her türlü yardıma çok minnettar olurum.
Teşekkürler!
import pdb; pdb.set_trace()
ve ardından etkileşimli olarak kodda ilerleyebilirsiniz. Bu, program akışını izlemenize yardımcı olabilir.