Skip to content

Logging (Günlük Kaydı)

Genel Bakış

Logging, uygulama ve sistem davranışlarının kaydedilmesi, analiz edilmesi ve izlenmesi sürecidir. Etkili bir logging stratejisi, sorunların tespit edilmesi, performans optimizasyonu ve güvenlik denetimleri için kritik öneme sahiptir.

Temel Kavramlar

1. Yapılandırılmış Logging

public class StructuredLoggingService
{
    private readonly ILogger<StructuredLoggingService> _logger;

    public StructuredLoggingService(ILogger<StructuredLoggingService> logger)
    {
        _logger = logger;
    }

    public void LogUserAction(UserAction action)
    {
        _logger.LogInformation(
            "User {UserId} performed {ActionType} on {ResourceType} at {Timestamp}",
            action.UserId,
            action.ActionType,
            action.ResourceType,
            action.Timestamp
        );
    }

    public void LogError(Exception ex, string context)
    {
        _logger.LogError(
            ex,
            "Error occurred in {Context}. Error: {ErrorMessage}",
            context,
            ex.Message
        );
    }
}

2. Log Seviyeleri ve Filtreleme

public class LogLevelService
{
    private readonly ILogger<LogLevelService> _logger;

    public LogLevelService(ILogger<LogLevelService> logger)
    {
        _logger = logger;
    }

    public void LogWithDifferentLevels(string message)
    {
        // Debug seviyesi - detaylı bilgi
        _logger.LogDebug($"Debug: {message}");

        // Information seviyesi - genel bilgi
        _logger.LogInformation($"Info: {message}");

        // Warning seviyesi - uyarı
        _logger.LogWarning($"Warning: {message}");

        // Error seviyesi - hata
        _logger.LogError($"Error: {message}");

        // Critical seviyesi - kritik hata
        _logger.LogCritical($"Critical: {message}");
    }
}

3. Log Toplama ve Analiz

public class LogAggregationService
{
    private readonly ILogger<LogAggregationService> _logger;
    private readonly ILogCollector _logCollector;

    public LogAggregationService(ILogger<LogAggregationService> logger, ILogCollector logCollector)
    {
        _logger = logger;
        _logCollector = logCollector;
    }

    public async Task AnalyzeLogsAsync(DateTime startTime, DateTime endTime)
    {
        // Logları topla
        var logs = await _logCollector.GetLogsAsync(startTime, endTime);

        // Hata analizi
        var errorLogs = logs.Where(l => l.Level == LogLevel.Error).ToList();
        _logger.LogInformation($"Found {errorLogs.Count} error logs");

        // Performans analizi
        var slowRequests = logs.Where(l => l.Duration > TimeSpan.FromSeconds(1)).ToList();
        _logger.LogInformation($"Found {slowRequests.Count} slow requests");

        // Kullanıcı aktivite analizi
        var userActivities = logs.GroupBy(l => l.UserId)
            .Select(g => new { UserId = g.Key, Count = g.Count() })
            .ToList();
    }
}

4. Log Rotasyonu ve Arşivleme

public class LogRotationService
{
    private readonly ILogger<LogRotationService> _logger;
    private readonly ILogStorage _logStorage;

    public LogRotationService(ILogger<LogRotationService> logger, ILogStorage logStorage)
    {
        _logger = logger;
        _logStorage = logStorage;
    }

    public async Task RotateLogsAsync()
    {
        // Eski logları arşivle
        var oldLogs = await _logStorage.GetOldLogsAsync(TimeSpan.FromDays(30));
        await _logStorage.ArchiveLogsAsync(oldLogs);

        // Log dosyalarını döndür
        await _logStorage.RotateLogFilesAsync();

        _logger.LogInformation("Log rotation completed successfully");
    }
}

Best Practices

1. Log Stratejisi

  • Log seviyelerinin doğru kullanımı
  • Yapılandırılmış log formatı
  • Anlamlı log mesajları
  • Bağlam bilgisi
  • Performans etkisi

2. Güvenlik ve Gizlilik

  • Hassas veri filtreleme
  • Log şifreleme
  • Erişim kontrolü
  • Veri saklama politikaları
  • Uyumluluk gereksinimleri

3. Performans ve Ölçeklenebilirlik

  • Asenkron logging
  • Toplu log gönderimi
  • Log sıkıştırma
  • Depolama optimizasyonu
  • Kaynak kullanımı

Sık Sorulan Sorular

1. Logging neden önemlidir?

  • Sorun tespiti
  • Performans analizi
  • Güvenlik denetimi
  • Kullanıcı davranışı analizi
  • Uyumluluk gereksinimleri

2. Hangi bilgiler loglanmalıdır?

  • Hata mesajları
  • Performans metrikleri
  • Kullanıcı işlemleri
  • Sistem olayları
  • Güvenlik olayları

3. Logging zorlukları nelerdir?

  • Veri hacmi
  • Performans etkisi
  • Depolama maliyeti
  • Veri analizi
  • Güvenlik endişeleri

Kaynaklar