Resim

Python logging Modülü

Python logging Modülü: Profesyonel Hata ve Bilgi Yönetimi

Neden print() yerine logging kullanmalıyız?

Özellikprint() Fonksiyonulogging Modülü
HedefVeriyi anında konsola yazar (kaybolur).Veriyi hem konsola hem de kalıcı bir dosyaya yazar.
SeviyeYok (Hepsi aynı öneme sahip).5 farklı önem seviyesi vardır (DEBUG, INFO, ERROR vb.).
FormatSadece mesajı gösterir.Tarih, saat, dosya adı, fonksiyon adı ve mesajı otomatik ekler.
Açma/KapatmaKapatmak için tüm print satırlarını silmelisiniz.Tek bir ayarla belirli seviyenin altındaki tüm kayıtları kapatabilirsiniz.

1. Logging Seviyeleri (Önem Sırasına Göre)

logging sistemi, mesajları önem derecesine göre sınıflandırır. Varsayılan ayar, sadece WARNING ve daha yüksek seviyeleri gösterir.

SeviyeDeğerAmacı
DEBUG10Çok detaylı bilgi, sadece hata ayıklama (debugging) sırasında kullanılır.
INFO20Programın beklenen olayları (Örn: "Veritabanına bağlantı kuruldu", "100 kayıt işlendi").
WARNING30Potansiyel bir sorunu belirten uyarılar (Örn: "Dosya bulunamadı, varsayılan ayarlar kullanılıyor").
ERROR40Programın bir görevi yerine getiremediği ciddi sorunlar (Örn: "API isteği başarısız oldu").
CRITICAL50Programın tamamen durmasına neden olan çok ciddi sorunlar (Örn: "Bellek tükendi, sistem kapanıyor").

2. Temel Kullanım

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!

3. Kayıtları Dosyaya Yazma

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

Bu blogdaki popüler yayınlar

Python random Modülü

Python print()

Yazılım Nedir?