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 logging
2
3# Logger oluştur
4logger = logging.getLogger('uygulamam')
5logger.setLevel(logging.DEBUG)
6
7# Dosya handler'ı (dosyaya yazacak)
8file_handler = logging.FileHandler('app.log')
9file_handler.setLevel(logging.ERROR)
10
11# Konsol handler'ı (ekrana yazacak)
12console_handler = logging.StreamHandler()
13console_handler.setLevel(logging.INFO)
14
15# Format ayarla
16formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
17file_handler.setFormatter(formatter)
18console_handler.setFormatter(formatter)
19
20# Handler'ları logger'a ekle
21logger.addHandler(file_handler)
22logger.addHandler(console_handler)
23
24# Test et
25logger.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üksek
32024-01-15 10:30:45,125 - uygulamam - ERROR - Veritabanı bağlantısı başarısız
42024-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 logging
2
3logging.basicConfig(
4filename='app.log',
5level=logging.INFO,
6format='%(asctime)s - %(levelname)s - %(message)s'
7)
8
9logging.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.

konu hakkında tepkinizi verebilirsiniz