Kerestecilik
Python zaten mükemmel bir yerleşik günlükleme modülüne sahiptir . Günlük şablonunu burada kullanmak isteyebilirsiniz .
Günlüğe kaydetme modülü bir önem düzeyi belirlemenizi sağlar; hata ayıklama sırasında her şeyi günlüğe kaydedebilirsiniz, normal çalışma sırasında ise yalnızca kritik şeyleri kaydedebilirsiniz. Bazı şeyleri kapatabilir ve açabilirsiniz.
Çoğu kişi hata ayıklamak için temel yazdırma deyimlerini kullanır ve ardından yazdırma deyimlerini kaldırır. Onları bırakmak daha iyidir, ancak devre dışı bırakın; başka bir hatanız olduğunda, her şeyi yeniden etkinleştirebilir ve günlüklerinize bakabilirsiniz.
Bu, ağ bağlantısının diğer ucundan önce zaman aşımına uğramadan ve kaybolmadan yanıt vermesi gereken ağ programları gibi, işleri hızlı bir şekilde yapması gereken programlarda hata ayıklamanın en iyi yolu olabilir. Bir hata ayıklayıcıyı tek adımlı hale getirmek için fazla zamanınız olmayabilir; ancak kodunuzun çalışmasına izin verebilir ve her şeyi günlüğe kaydedebilir, daha sonra günlükleri gözleyebilir ve gerçekte ne olduğunu anlayabilirsiniz.
DÜZENLEME: Şablonlar için orijinal URL: http://aymanh.com/python-debugging-techniques
Bu sayfa eksik, bu yüzden onu archive.org'da kaydedilen anlık görüntü referansıyla değiştirdim: http://web.archive.org/web/20120819135307/http://aymanh.com/python-debugging-techniques
Tekrar kaybolması durumunda, bahsettiğim şablonlar. Bu blogdan alınan koddur; Ben yazmadım.
import logging
import optparse
LOGGING_LEVELS = {'critical': logging.CRITICAL,
'error': logging.ERROR,
'warning': logging.WARNING,
'info': logging.INFO,
'debug': logging.DEBUG}
def main():
parser = optparse.OptionParser()
parser.add_option('-l', '--logging-level', help='Logging level')
parser.add_option('-f', '--logging-file', help='Logging file name')
(options, args) = parser.parse_args()
logging_level = LOGGING_LEVELS.get(options.logging_level, logging.NOTSET)
logging.basicConfig(level=logging_level, filename=options.logging_file,
format='%(asctime)s %(levelname)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
# Your program goes here.
# You can access command-line arguments using the args variable.
if __name__ == '__main__':
main()
Ve işte yukarıdakilerin nasıl kullanılacağına dair açıklaması. Yine, bunun için kredi alamadım:
Varsayılan olarak, kayıt modülü kritik, hata ve uyarı mesajlarını yazdırır. Bunu tüm düzeylerin yazdırılacağı şekilde değiştirmek için şunu kullanın:
$ ./your-program.py --logging=debug
Debug.log adlı bir dosyaya günlük mesajları göndermek için şunu kullanın:
$ ./your-program.py --logging-level=debug --logging-file=debug.log