Python Log Dosyalarında Saklama Süresi Yönetimi

0 Yanıt 0 Görüntülenme
Puanlayanlar
Katılımcılar
Konuyu Açan #1
Python Log Dosyalarında Saklama Süresi Yönetimi

Python projelerinde loglama, hata takibi ve sistem performansını izlemek açısından kritik öneme sahiptir. Ancak logların sürekli büyümesi depolama alanı sorunları yaratabilir ve eski logların yönetimi gerekliliğini doğurur. Bu noktada, log dosyalarının otomatik olarak belirli bir süre veya boyut limitine ulaştığında silinmesi veya arşivlenmesi, sistemlerin sürdürülebilirliği açısından faydalı olur.

Python'da log dosyalarının saklama süresi ve rotasyonu için genellikle logging modülü ile birlikte RotatingFileHandler veya TimedRotatingFileHandler tercih edilir. [i]RotatingFileHandler[/u], log dosyası belirli bir boyuta ulaştığında yeni bir dosya oluşturur ve eski logları silmek veya arşivlemek için ek kodlar yazmak gerekir. Öte yandan, TimedRotatingFileHandler ise logların belirli zaman aralıklarında döndürülmesini sağlar, böylece otomatik olarak eski loglar arşivlenir veya silinir.

Örneğin, TimedRotatingFileHandler kullanarak günlük veya haftalık otomatik silme veya arşivleme yapabilirsiniz. Bunun yanı sıra, logların saklama süresini kodla yönetmek için, logların eski dosyalarını belirli bir süre sonra silen veya arşivleyen özel scriptler yazmak gerekebilir. Bu da genellikle os ve datetime modülleriyle entegre edilir.

Aşağıda, günlük dönen logların bir hafta sonra silinmesini sağlayan temel bir örnek görebilirsiniz:

KOD
1234567891011121314151617181920212223
import logging
from logging.handlers import TimedRotatingFileHandler
import os
import time
from datetime import datetime, timedelta

log_handler = TimedRotatingFileHandler('app.log', when='midnight', backupCount=7)
logger = logging.getLogger('MyLogger')
logger.setLevel(logging.INFO)
logger.addHandler(log_handler)

def cleanup_old_logs(log_dir, days=7):
    now = time.time()
    for filename in os.listdir(log_dir):
        if filename.startswith('app.log'):
            filepath = os.path.join(log_dir, filename)
            if os.stat(filepath).st_mtime < now - days * 86400:
                os.remove(filepath)

[b]Günlük loglama ve temizleme[/b]
logger.info('Log kaydı')
cleanup_old_logs('.', days=7)


Burada, backupCount=7 ile 7 gün boyunca log dosyası saklanır. Ek olarak, cleanup_old_logs fonksiyonu, belirli bir dizindeki eski log dosyalarını silmek için kullanılabilir. Bu yöntemler, büyük ölçekli ve uzun süreli sistemlerde logların düzenli şekilde temizlenmesini sağlar.

Sistemde log saklama politikasını belirlerken, yasal gereklilikler, depolama kapasitesi ve performans kriterleri göz önüne alınmalı; otomatik rotasyon ve silme mekanizmaları ise bu politikaların temel taşlarını oluşturur. Bu sayede, sistemler hem düzenli hem de güvenli bir şekilde log yönetimini sürdürebilir.

Yanıt vermek için giriş yapmış olmalısınız.

Bu konuyu görüntüleyen kullanıcılar (Toplam: 3, Üyeler: 3, Misafirler: 0)
Toplam: 3 (üyeler: 3, misafirler: 0)
0 alıntı seçildi