Log providers
Console ve Debug log provider'larını öğrenirsin.
Log providers
Sağlayıcı (provider), günlükleri nereye yazacağını belirler. Yaygın iki sağlayıcı: ConsoleLoggerProvider konsola yazar; DebugLoggerProvider Visual Studio'nun Çıktı penceresine yazar. Birden fazla sağlayıcı aynı günlükleyiciye bağlanabilir.
Sağlayıcılar bir fabrika üzerinden yapılandırılır: loggerFactory.AddConsole().AddDebug(). Böylece tek bir ILogger<T> çağrısı hem konsola hem hata ayıklayıcıya düşer. Üretimde Debug kapatılır; yalnızca Console veya dosya kalır.
Çoklu sağlayıcı
Bir günlükleyici aynı anda birden fazla sağlayıcıya yazabilir. Örneğin hem Console hem Debug aynı iletiyi alır; kullanıcı konsolda görür, geliştirici Çıktı penceresinde. Bu, tek çağrı çok hedef modelidir.
Testlerde bu çoklu yapıyı sahte sağlayıcılarla denetlemek kolaydır: günlükleri bellekte toplayan bir sağlayıcı eklersin, sonra içeriğini Assert.Equal ile doğrularsın. Bu, gerçek konsol çıktısını yakalamaktan daha güvenilir.
Uygulama Console ve Debug sağlayıcılarını uygula
Bir ILogger<T> arayüzü tanımla; void LogInformation(string message) metodu olsun. ConsoleLogger<T> sınıfı Console.WriteLine("[INF] " + message) yapsın. DebugLogger<T> sınıfı System.Diagnostics.Debug.WriteLine çağrısı yapsın. Main'de her iki günlükleyiciden birer örnek yarat ve LogInformation çağrısı yap; Console'a "Konsola yazıldı", Debug'a "Hata ayıklayıcıya yazıldı" iletisi ver.
Örnek çözümü göster
interface ILogger<T> { void LogInformation(string message); } tanımla. class ConsoleLogger<T> : ILogger<T> { public void LogInformation(string message) => Console.WriteLine("[INF] " + message); } yaz. class DebugLogger<T> : ILogger<T> { public void LogInformation(string message) => Debug.WriteLine("[INF] " + message); } yaz. Main'de: var c = new ConsoleLogger<Program>(); c.LogInformation("Konsola yazıldı"); var d = new DebugLogger<Program>(); d.LogInformation("Hata ayıklayıcıya yazıldı");
Örnek çözüm:
using System;
using System.Diagnostics;
public interface ILogger<T>
{
void LogInformation(string message);
}
public class ConsoleLogger<T> : ILogger<T>
{
public void LogInformation(string message) =>
Console.WriteLine("[INF] " + message);
}
public class DebugLogger<T> : ILogger<T>
{
public void LogInformation(string message) =>
Debug.WriteLine("[INF] " + message);
}
class Program
{
static void Main()
{
var console = new ConsoleLogger<Program>();
console.LogInformation("Konsola yazıldı");
var debug = new DebugLogger<Program>();
debug.LogInformation("Hata ayıklayıcıya yazıldı");
}
}
Kendini test et
-
Visual Studio Çıktı penceresine yazan sağlayıcı hangisidir?
- DebugLoggerProvider
- ConsoleLoggerProvider
- FileLoggerProvider
- EventLogLoggerProvider
Cevabı göster
DebugLoggerProvider — Doğru. DebugLoggerProvider System.Diagnostics.Debug üzerinden hata ayıklayıcıya yazar.
-
Sağlayıcıları hedefiyle eşleştir
- ConsoleLoggerProvider
- Konsol penceresi
- DebugLoggerProvider
- Hata ayıklayıcı çıktısı
- AddConsole
- Konsol sağlayıcısı ekler
- AddDebug
- Debug sağlayıcısı ekler
-
Sağlayıcı ekleme çağrısını tamamla
loggerFactory.Add____();Cevabı göster
loggerFactory.AddConsole();