- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
Python logging Modülü: Profesyonel Hata ve Bilgi Yönetimiprint() yerine logging kullanmalıyız?| Özellik | print() Fonksiyonu | logging Modülü |
| Hedef | Veriyi anında konsola yazar (kaybolur). | Veriyi hem konsola hem de kalıcı bir dosyaya yazar. |
| Seviye | Yok (Hepsi aynı öneme sahip). | 5 farklı önem seviyesi vardır (DEBUG, INFO, ERROR vb.). |
| Format | Sadece mesajı gösterir. | Tarih, saat, dosya adı, fonksiyon adı ve mesajı otomatik ekler. |
| Açma/Kapatma | Kapatmak için tüm print satırlarını silmelisiniz. | Tek bir ayarla belirli seviyenin altındaki tüm kayıtları kapatabilirsiniz. |
logging sistemi, mesajları önem derecesine göre sınıflandırır. Varsayılan ayar, sadece WARNING ve daha yüksek seviyeleri gösterir.
| Seviye | Değer | Amacı |
| DEBUG | 10 | Çok detaylı bilgi, sadece hata ayıklama (debugging) sırasında kullanılır. |
| INFO | 20 | Programın beklenen olayları (Örn: "Veritabanına bağlantı kuruldu", "100 kayıt işlendi"). |
| WARNING | 30 | Potansiyel bir sorunu belirten uyarılar (Örn: "Dosya bulunamadı, varsayılan ayarlar kullanılıyor"). |
| ERROR | 40 | Programın bir görevi yerine getiremediği ciddi sorunlar (Örn: "API isteği başarısız oldu"). |
| CRITICAL | 50 | Programın tamamen durmasına neden olan çok ciddi sorunlar (Örn: "Bellek tükendi, sistem kapanıyor"). |
import logging
import sys
# 1. TEMEL AYARLAMA (Configuration)
# Hangi seviyeden itibaren kayıt yapılacağını ve nereye
#yazılacağını belirtir.
logging.basicConfig(
# En düşük seviyeyi seçtik, böylece DEBUG bile görünür.
level=logging.DEBUG,
format='%(asctime)s - %(levelname)s - %(message)s',
# Kayıtları konsola yaz (varsayılan)
stream=sys.stdout
)
# 2. LOG MESAJLARI OLUŞTURMA
logging.debug("Bu mesaj sadece hata ayıklama modunda görünür.")
logging.info("Kullanıcı Ayşe sisteme giriş yaptı.")
logging.warning("API zaman aşımına uğradı, tekrar deneniyor.")
logging.error("Hesaplama sırasında bir sıfıra bölme hatası oluştu.")
logging.critical("Veritabanı bağlantısı koptu. Uygulama kapatılıyor!")
Örnek Çıktı:
2025-10-24 13:06:02,123 - DEBUG - Bu mesaj sadece hata ayıklama modunda görünür.
2025-10-24 13:06:02,123 - INFO - Kullanıcı Ayşe sisteme giriş yaptı.
2025-10-24 13:06:02,123 - WARNING - API zaman aşımına uğradı, tekrar deneniyor.
2025-10-24 13:06:02,123 - ERROR - Hesaplama sırasında bir sıfıra bölme hatası oluştu.
2025-10-24 13:06:02,123 - CRITICAL - Veritabanı bağlantısı koptu. Uygulama kapatılıyor!
Profesyonel projelerde logları bir dosyaya yazmak istenir. basicConfig ayarını değiştirmeniz yeterlidir:
# Yeni ayar: Kayıtları 'uygulama.log' dosyasına yaz.
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(filename)s - %(message)s',
filename='uygulama.log', # Kayıtların yazılacağı dosya
filemode='a' # 'a' (append) modunda dosyaya ekle
)
logging.info("Sistem başlatıldı.")
# Bu mesaj artık konsolda görünmeyecek, sadece uygulamam.log
#dosyasında olacaktır.
Bu modül, özellikle OOP ile yazdığınız büyük projelerde, hangi sınıfın veya metodun ne zaman hata verdiğini takip etmek için hayati önem taşır.
Yorumlar
Yorum Gönder