Kendi Logger Framework'ü Geliştirme: Python ile Adım Adım
Her projenin iyi bir logging sistemi gerekir. Standart `logging` modülü güçlü ama bazen kendi framework'ünüz daha esnektir. Basit ama işlevsel bir logger yazalım.
Problemi kısaca: Konsolda ve dosyaya yazan, log seviyelerini kontrol eden, timestamp ekleyen ve hata ayıklamayı kolaylaştıran bir sistem istiyoruz.
çalışan çözüm:
Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1import os2import sys3from datetime import datetime4from enum import Enum56class LogLevel(Enum):7DEBUG = 18INFO = 29WARNING = 310ERROR = 411CRITICAL = 51213class SimpleLogger:14def __init__(self, name, log_file=None, min_level=LogLevel.INFO):15self.name = name16self.log_file = log_file17self.min_level = min_level1819if log_file:20os.makedirs(os.path.dirname(log_file) or '.', exist_ok=True)2122def _format_message(self, level, message):23timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')24return f"[{timestamp}] [{level.name}] {self.name}: {message}"2526def _write(self, level, message):27if level.value < self.min_level.value:28return2930formatted = self._format_message(level, message)31print(formatted)3233if self.log_file:34with open(self.log_file, 'a', encoding='utf-8') as f:35f.write(formatted + '\n')3637def debug(self, message):38self._write(LogLevel.DEBUG, message)3940def info(self, message):41self._write(LogLevel.INFO, message)4243def warning(self, message):44self._write(LogLevel.WARNING, message)4546def error(self, message):47self._write(LogLevel.ERROR, message)4849def critical(self, message):50self._write(LogLevel.CRITICAL, message)5152# Kullanım53logger = SimpleLogger('MyApp', log_file='app.log', min_level=LogLevel.DEBUG)5455logger.debug('Başlangıç mesajı')56logger.info('Uygulama başladı')57logger.warning('Uyarı: Hafıza kullanımı yüksek')58logger.error('Veritabanı bağlantısı başarısız')59logger.critical('Sistem çöküyor!')Beklenen Çıktı:
1[2024-01-15 14:23:45] [DEBUG] MyApp: Başlangıç mesajı2[2024-01-15 14:23:45] [INFO] MyApp: Uygulama başladı3[2024-01-15 14:23:45] [WARNING] MyApp: Uyarı: Hafıza kullanımı yüksek4[2024-01-15 14:23:45] [ERROR] MyApp: Veritabanı bağlantısı başarısız5[2024-01-15 14:23:45] [CRITICAL] MyApp: Sistem çöküyor!Kodu `app.log` dosyasına da kaydedilir.
Sık Yapılan Hata: `min_level=LogLevel.WARNING` ayarladığınızda DEBUG ve INFO mesajları görünmez, bu tasarım gereğidir. Geliştirme sırasında `LogLevel.DEBUG` kullanın.
0 yorum