CodeBlanks Logo Icon CodeBlanks

Log levels

C# kursu · İleri seviye · Ders 74/83

LogDebug, LogInformation, LogWarning ve LogError seviyelerini öğrenirsin.

Log levels

Her günlük iletisi bir seviye (level) taşır. .NET'te yaygın dört seviye şudur: LogDebug (ayrıntılı, yalnızca geliştiriciye), LogInformation (normal akış), LogWarning (dikkat gerektiren ama kritik olmayan), LogError (hata).

Seviye, günlükçünün çıktısını filtrelemek için kullanılır. Üretimde Debug kapatılır, Warning ve Error açılır. Böylece gereksiz gürültü azalır, önemli olaylar görünür kalır. Seviye seçimi iletinin önemine bağlıdır, miktarına değil.

Seviye seçimi

Doğru seviyeyi seçmek deneyim ister. İlke: kullanıcıya gösterilecek mesaj LogError; dikkat gerektiren ama kurtarılabilir durum LogWarning; beklenen normal davranış LogInformation; yalnızca geliştiricinin görmesi gereken ayrıntı LogDebug.

Yaygın hata: her şeyi LogInformation ile yazmak. Bu, üretimde gürültüyü artırır. Diğer uç: her şeyi LogError yapmak. Bu, gerçek hataların kaybolmasına yol açar. Seviyeyi olayın önemine göre seç.

Uygulama Dört seviyede günlük yaz

Bir ILogger<T> arayüzü tanımla; LogDebug, LogInformation, LogWarning ve LogError metotları (her biri string message parametreli) olsun. ConsoleLogger<T> sınıfı bu metotları sırasıyla [DBG], [INF], [WRN] ve [ERR] önekiyle konsola yazsın. Main'de bir ConsoleLogger<Program> yarat ve dört metodu sırasıyla "Ayrıntılı bilgi", "Normal akış", "Dikkat gerektiren durum", "Hata oluştu" ile çağır.

Örnek çözümü göster
interface ILogger<T> { void LogDebug(string m); void LogInformation(string m); void LogWarning(string m); void LogError(string m); } tanımla. class ConsoleLogger<T> : ILogger<T> { public void LogDebug(string m) => Console.WriteLine("[DBG] " + m); public void LogInformation(string m) => Console.WriteLine("[INF] " + m); public void LogWarning(string m) => Console.WriteLine("[WRN] " + m); public void LogError(string m) => Console.WriteLine("[ERR] " + m); } yaz. Main'de: var l = new ConsoleLogger<Program>(); l.LogDebug("Ayrıntılı bilgi"); l.LogInformation("Normal akış"); l.LogWarning("Dikkat gerektiren durum"); l.LogError("Hata oluştu");
Örnek çözüm:
using System;

public interface ILogger<T>
{
    void LogDebug(string message);
    void LogInformation(string message);
    void LogWarning(string message);
    void LogError(string message);
}

public class ConsoleLogger<T> : ILogger<T>
{
    public void LogDebug(string message) =>
        Console.WriteLine("[DBG] " + message);
    public void LogInformation(string message) =>
        Console.WriteLine("[INF] " + message);
    public void LogWarning(string message) =>
        Console.WriteLine("[WRN] " + message);
    public void LogError(string message) =>
        Console.WriteLine("[ERR] " + message);
}

class Program
{
    static void Main()
    {
        var logger = new ConsoleLogger<Program>();
        logger.LogDebug("Ayrıntılı bilgi");
        logger.LogInformation("Normal akış");
        logger.LogWarning("Dikkat gerektiren durum");
        logger.LogError("Hata oluştu");
    }
}

Kendini test et

  1. Normal akıştaki bir olay hangi seviyeyle günlüklenir?

    • LogError
    • LogDebug
    • LogInformation
    • LogWarning
    Cevabı göster

    LogInformation — Doğru. LogInformation normal akıştaki olayları günlükler.

  2. Hata seviyesinde günlük çağrısını tamamla

    logger.____("Dosya bulunamadı: " + path);
    Cevabı göster
    logger.LogError("Dosya bulunamadı: " + path);
  3. Seviyeleri kullanım alanıyla eşleştir

    LogDebug
    Geliştirici ayrıntısı
    LogInformation
    Normal akış
    LogWarning
    Dikkat gerektiren durum
    LogError
    Hata

İleri seviye bölümündeki tüm dersler