{% extends "admin/base_site.html" %} {% load i18n %} {% block title %}Merkezi Loglama Sistemi Testi{% endblock %} {% block content %}

Merkezi Loglama Sistemi Testi

Bu sayfa, django-log-hub modülünün merkezi loglama özelliklerini test etmenizi sağlar.

Özellik: Tüm adımlar listede toplanır, return'dan önce tek satırda kaydedilir, HTML'de alt alta görünür.

Dosya Davranışı: Her fonksiyon çağrısı aynı dosyaya alt satıra eklenir, önceki loglar silinmez.

Test Senaryoları

Test Sonuçları

Kullanım Örnekleri

1. DynamicLogger - Context Manager ile Merkezi Loglama (Önerilen)

from log_hub.services import DynamicLogger

# Tüm adımlar tek seferde kaydedilir
with DynamicLogger("Veri İşleme", user_id="123") as logger:
    logger.step("Veri Okuma", {"file": "data.csv"})
    logger.step("Veri Doğrulama", {"records": 1000})
    logger.step("Veri İşleme", {"algorithm": "ml_model"})
    logger.warning("Eksik veri tespit edildi", {"missing_count": 5})
    
    # Return'dan önce tüm loglar tek satırda kaydedilir
    result = logger.finish()

2. Global Logging Functions - Basit Kullanım

from log_hub.services import log_step, log_info, log_warning, log_error, finish_logging

# Adım adım log toplama
log_step("İşlem başladı", {"user_id": "123"})
log_info("Veri okundu")
log_step("Veri işlendi", {"data_size": 1000})
log_warning("Eksik veri tespit edildi")
log_error("Hata oluştu")
finish_logging()

3. @aggregated_log Dekoratörü - Fonksiyon Merkezi Loglama

from log_hub.services import aggregated_log

@aggregated_log("Kullanıcı İşlemi")
def process_user_data(user_id, data):
    # Bu fonksiyon otomatik olarak merkezi loglama ile loglanacak
    # Tüm adımlar tek satırda kaydedilecek ama HTML'de alt alta görünecek
    result = {"status": "processed", "user_id": user_id}
    return result

# Kullanım
result = process_user_data("123", {"name": "John"})

4. API Endpoint Örneği

from log_hub.services import DynamicLogger
from django.http import JsonResponse

def api_endpoint(request):
    # user_id otomatik olarak request.user.username'den alınır
    with DynamicLogger("API İşlemi", user_id=request.user.username) as logger:
        logger.step("Request alındı", {"method": request.method, "path": request.path})
        logger.step("Parametreler doğrulanıyor", {"params": request.data})
        logger.step("Veritabanı sorgusu yapılıyor", {"query": "SELECT * FROM users"})
        logger.step("İş mantığı çalıştırılıyor", {"business_logic": "kullanıcı güncelleme"})
        logger.step("Response hazırlanıyor", {"status_code": 200, "content_type": "application/json"})
        
        result = {"status": "success"}
        return JsonResponse(result)

5. Serializer Örneği

from log_hub.services import log_step, log_info, log_warning, log_error, finish_logging

def to_representation(self, instance):
    log_step("Starting data processing", {"shipment_id": instance.id})
    
    if instance.src_station:
        representation['src_station'] = StationSerializer(instance.src_station).data
        log_step("src_station processed", {"station_id": instance.src_station.id})
    
    if instance.dst_station:
        representation['dst_station'] = StationSerializer(instance.dst_station).data
        log_step("dst_station processed", {"station_id": instance.dst_station.id})
    
    log_step("items processed", {"item_count": instance.shipment_items.count()})
    finish_logging()
    return representation

Merkezi Loglama Özellikleri

Yeni Özellikler

Avantajlar

{% csrf_token %} {% endblock %}