Python logging ile Profesyonel Günlük Kaydı
Python'da basit print() kullanmak yerine logging modülü ile günlük kaydı tutmak çok daha profesyoneldir. Hata ayıklama, üretim ortamında sorun izleme ve sistem davranışını anlamak için gereklidir.
Logging, uygulamanızın çalışması sırasında meydana gelen olayları (hata, uyarı, bilgi) zaman damgası ile kaydeden bir sistemdir. Print() ile fark: loglar dosyaya yazılır, seviyelere ayrılır ve denetlenebilir.
Logging'in dört ana bileşeni vardır:
1. Logger: Günlük mesajı oluşturan nesne
2. Handler: Günlüğü nereye göndereceğini belirler (dosya, konsol vb.)
3. Formatter: Günlüğün nasıl görüneceğini ayarlar
4. Level: Önem derecesi (DEBUG, INFO, WARNING, ERROR, CRITICAL)
Aşağıdaki kod, hem konsola hem de dosyaya günlük kaydı yapacak bir sistem kurar:
1import logging23# Logger oluştur4logger = logging.getLogger('uygulamam')5logger.setLevel(logging.DEBUG)67# Dosya handler'ı (dosyaya yazacak)8file_handler = logging.FileHandler('app.log')9file_handler.setLevel(logging.ERROR)1011# Konsol handler'ı (ekrana yazacak)12console_handler = logging.StreamHandler()13console_handler.setLevel(logging.INFO)1415# Format ayarla16formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')17file_handler.setFormatter(formatter)18console_handler.setFormatter(formatter)1920# Handler'ları logger'a ekle21logger.addHandler(file_handler)22logger.addHandler(console_handler)2324# Test et25logger.debug('Bu bir debug mesajıdır')26logger.info('Uygulama başladı')27logger.warning('Dikkat: Bellek kullanımı yüksek')28logger.error('Veritabanı bağlantısı başarısız')29logger.critical('Sistem çöktü!')Beklenen çıktı (konsol):
12024-01-15 10:30:45,123 - uygulamam - INFO - Uygulama başladı22024-01-15 10:30:45,124 - uygulamam - WARNING - Dikkat: Bellek kullanımı yüksek32024-01-15 10:30:45,125 - uygulamam - ERROR - Veritabanı bağlantısı başarısız42024-01-15 10:30:45,126 - uygulamam - CRITICAL - Sistem çöktü!app.log dosyasında: Sadece ERROR ve CRITICAL mesajları yazılır.
Basit projeler için logging.basicConfig() yeterlidir:
1import logging23logging.basicConfig(4filename='app.log',5level=logging.INFO,6format='%(asctime)s - %(levelname)s - %(message)s'7)89logging.info('Sistem başlatıldı')10logging.error('Hata oluştu')Logging, üretim ortamında vazgeçilmezdir. Her proje başında logging'i doğru kurmak, sonradan sorun çözmek için zaman kazandırır.
0 yorum