Şu anda Python'da oldukça karmaşık bir sistem yapıyorum ve hata ayıklama yaptığımda çoğu zaman basit betiklere çok sayıda yazı yazdım. Genel görünümü korumak için sık sık baskı ifadesinin bulunduğu dosya adını ve satır numarasını yazdırmak istiyorum. Tabii el ile yapmak veya böyle bir şey ile olabilir:Python hata ayıklaması: bir işlevin çağrıldığı dosya adı ve satır numarası olsun?
from inspect import currentframe, getframeinfo
print getframeinfo(currentframe()).filename + ':' + str(getframeinfo(currentframe()).lineno) + ' - ', 'what I actually want to print out here'
gibi bir şey yazdırır hangi:
burada yazdırmak istediğinifilenameX.py:273 - Aslında
print debuginfo(), 'what I actually want to print out here'
:
ben böyle bir şey yapmak isterler, daha basit hale getirmek için Yani bir yerde bir işlevi koydu ve yapıyor çalıştı: maalesef
from debugutil import debuginfo
print debuginfo(), 'what I actually want to print out here'
print debuginfo(), 'and something else here'
, alıyorum:
debugutil.py:3 - what I actually want to print out here
debugutil.py:3 - and something else here
yerine, ben işlevini tanımlı hangi dosya adı ve satır numarası yazdırır Ben debuginfo() aradığım satır. Bu barizdir, çünkü kod debugutil.py dosyasında bulunur.
Bu yüzden sorum şu: Bu debuginfo() işlevinin çağrıldığı dosya adını ve satır numarasını nasıl alabilirim? Tüm ipuçları memnuniyetle kabul edilir!
Kullanımı 'logging' modülü ve biçimlendiriciyi yapılandırın: https://docs.python.org/2/library/logging.html#logrecord-attributes. Tornado web çerçevesi aslında buna çok benzer bir biçime sahiptir, bu yüzden muhtemelen kodlarını kullanabilirsiniz: http://tornado.readthedocs.org/en/latest/_modules/tornado/log.html#LogFormatter – Blender