Django'da Hata Ayıklama

0 Yorum, 28 Şubat 2018 05:43, by Cenk Tuna, in

Hata ayıklamayı etkin kullanmak hızlı kod yazmanın önemli parametrelerinden biridir. Zaman maliyetinizi minimuma indirirken hayatınızı zehir edebilecek bir süreci kolaylıkla atlatabilirsiniz.

Django'da hata ayıklamanın birkaç yolu vardır. Visual Studio veya PyCharm gibi IDE’lerle, django-debug-toolbar gibi browser’dan kullanılan bir panel yordamıyla ya da kod aralarına yerleştirilen print’lerle… Bu yazıda en yaygın olanı Python Debugger’dan bahsettikten sonra buna ilave olarak StreamHandler loglamaya değineceğiz.

 Python Debugger, Django'nun SQL sorguları da dahil olmak üzere çalışan süreçlerden bilgi almak, hafızadaki nesnelerin içeriklerini görüntülemek için oldukça kullanışlıdır. Bu konuda şöyle bir video var: https://www.youtube.com/watch?v=7Vmik1M_ry0  Daha fazla detay isteyenler https://pythonconquerstheuniverse.wordpress.com/2009/09/10/debugging-in-python/  linkini ziyaret edebilir.

import pdb; pdb.set_trace()

ifadesiyle ile o satıra bir breakpoint koymuş oluyorsunuz. Bu, sizi bir konsola götürüyor ve orada istediğiniz gibi davranabiliyor; satır satır ilerleyebilirken python konsolu gibi tüm komutları ile o an hafızadaki nesneleri, değişkenleri izleyebiliyorsunuz.

Bunlara ilave olarak debug için loglamayı nasıl kullanabileceğinizden bahsedeceğim. Genel olarak loglama ile detaylı bilgiye daha önce yazdığım bir yazıdan elde edebilirsiniz.

settings.py’de aşağıdaki ayarları yaptığınızda; yani “DEBUG” seviyesindeki “StreamHandler” ile tüm hareketler Django’nun çalıştığı sistem konsolunda veya ekranındadır. Bu sayede debug konsolunda veritabanı hareketlerini de izleyebilir oluyoruz.

settings.py

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'request': {
            'format': '%(asctime)s %(levelname)s %(message)s',
        },
    },
    'handlers': {
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
        }
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['console'],
            'level': 'DEBUG',
            'propagate': True
        },
    }
}

Son olarak yine daha önceki çoklu ortamda çalışma makalesinde anlattığımız gibi local_settings.py sayesinde takımdan bağımsız, kişisel olarak kullanabilirsiniz.

Yazar Hakkında

0 Yorum

Yorumunuzu Paylaşırsanız seviniriz.

Girdiğiniz e-posta adresi kimseyle paylaşılmaz. Sadece kimlik olarak kullanılır.