Django'da Loglama

0 Yorum, 20 Şubat 2018 10:22, by Cenk Tuna, in

Giriş

Log verilerini analiz etmek, sistem davranışı sorunlarını çözmek ya da sistem optimizasyonu ve iyileştirmeler için en etkili yöntemlerden biridir. İşletim sistemleri, uygulama yazılımı, donanım ve ağdaki birçok ekipman log kayıtları oluşturur ve bunlar bilişim profesyonelleri için çok önemlidir.

Bunların dışında güvenlik tehditlerini ve iş analitiği modelleri tespit etmek için de kullanılabilir. İşletme hizmetleri, müşteri deneyimleri, iş akışları, iş yükleri ve tepki süreleri gibi örnekler loglama ile daha neler yapılabileceğini gösterir.

Bu makalede, Loglama’yı bir yazılımcı açısından değerlendirdikten sonra Django’da loglama konusunu ele alacağız.

Yazılım geliştiricilerinin hayatlarının büyük bir kısmı izleme, sorun giderme ve hata ayıklama işlemleridir. Bu işleri daha kolay hale getirmenin yolu ise kuşkusuz loglama kullanmaktır. Her ne kadar büyük bir text veri ve sıkıcı bir süreç olsa da doğru şekilde kullanılırsa, günlük verileri hem BT hem de işletme operasyonları için çok kritik çözüm ortağı olabilir.

Loglama Stratejisi

Dikkat edilmesi gereken noktaların başında strateji gelir. Beklenen sonuca kolayca ulaşabilmek için hangi verilerin nasıl saklanacağına karar vermek önemlidir. Sisteminiz için kritik veriyi, iş akışını ve iş akışlarındaki kırılım noktalarını doğru belirlemek gerekir. 

Oluşturulan log kayıtlarının nerede saklanacağı da yine sistemin çalışma prensiplerine göre değerlendirilmesi gereken konulardan biridir. Zira sürekli çevrimiçi uygulamalar olabileceği gibi çeşitli güvenlik seviyelerinde sistemler ya da bağlantı durumuna bağlı kritik çalışmalar olabilir. Böyle olunca işletim sistemi loglarında mı, dosya sisteminde mi yoksa veritabanında mı saklanacağına karar verilmelidir. 

Bununla birlikte birçok yazılım çok katmanlı mimari ile geliştirilmektedir. Çeşitli ölçeklerdeki uygulamalarda duruma göre her bir katman ayrı bir sunucu üzerinde koşabilir. Yine sistemin çalışma prensiplerine göre merkezi ya da dağıtık loglama mantığı tercih edilebilir.

Django’da Loglama

Django, bunun için Python'un yerleşik loglama modülünü kullanır. Detaylı bilgi için https://docs.djangoproject.com/en/2.0/topics/logging/ incelenebilir. Kullanımı oldukça basittir. Kullanılmak istenilen “.py” dosyasına aşağıdaki gibi import edip örneğini oluşturduktan sonra, ilgili yerde kayıt oluşturulur.
 

import logging

logger = logging.getLogger(__name__)

def index(request): 
    logger.debug("Ana sayfaya girildi.")

def contactform(request): 
    logger.info("İletişim formu çağrıldı")
        
    try: 
         logger.debug("İşlem bloğuna girildi.")
    except Exception, e:
         logger.exception(e)

 

Ayarlar
settings.py

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'request': {
            'format': '%(asctime)s %(levelname)s %(message)s',
        },
    },
    'handlers': {
        'file': {
            'level': 'ERROR',
            'class': 'logging.FileHandler',
            'filename': os.path.join(BASE_DIR, '../logs/applog.log'),
            'formatter' : 'request'
        },
    },
    'loggers': {
        'isgrestapp': {
            'handlers': ['file'],
            'level': 'ERROR',
            'propagate': False
        },
    }
}

Yukarıda görüldüğü üzere loglama etiketi 4 temel parçadan oluşur. 

Loggers: Log kaydının oluşturulması ile ilgili ayarlar. Genellikle, her Python modülünün (yani .py dosyası) günlük mesajlarını atamak için tek bir günlükçü vardır. Bununla birlikte, aynı modülde birden fazla kaydedici tanımlamak mümkündür.

Handlers: Kayıtların oluşturulacağı yerle ilgili ayarlar. Hedefler arasında düz dosyalar, bir sunucu konsolu, bir e-posta veya SMS mesajları olabilir. Aynı handler birden fazla logger tarafından kullanılabildiği gibi, bir logger birden fazla handler kullanması mümkündür.

Filters: Filtreleme seçenekleri

Formatters: Metnin biçimlendirilmesi ile ilgili ayarlar 

Birçok loglama kütüphanesinde olduğu gibi Django Loglama da veri durumu için beş seviye sunar: “Debug, Info, Warning, Error, Critical”.  Bu seviyelerin doğru bir şekilde kullanılması loglama stratejisinin kalitesini ortaya koyar.

Yukarıdaki ayara göre ERROR ve üstü seviyesindeki loglar belirlenen formatta bir dosyaya kaydedilecektir.

Bu yazıda sadece loglama mantığı ve Django Loglama’nın temel olarak nasıl yapılandırılacağından bahsettik. Derinlemesine inceleyip daha pek çok özelliği keşfettiğinizde daha etkili kodlar yazabileceksiniz.
 

Yazar Hakkında

0 Yorum

Yorumunuzu Paylaşırsanız seviniriz.

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