Günlük kaydı soyutlamaları, Debug/Trace
System.Diagnostics Debug/Trace yapılarını kullanın, dinleyiciler ekleyin ve uygulama kodunu veri hedeflerinden ayırmak için ILogger tarzı küçük bir soyutlama oluşturun.
Günlük kaydı soyutlamaları, Debug/Trace, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 3 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 3 dersten oluşur.
Günlükleme neden kullanılır?
Amaç:
- Hata ayıklama ve izleme iletileri gönderin
- Çıktıyı görmek için dinleyiciler ekleyin
- Küçük bir günlükleme soyutlaması tanıtın
- Düzeyleri ve basit biçimlendirmeyi seçin
Hata ayıklama ve izleme temelleri
Hata ayıklama geliştirme içindir; izleme her derleme içindir. Konsol uygulamalarında iletileri görmek için bir ConsoleTraceListener ekleyin.
using System;
using System.Diagnostics;
// Demo: show Debug/Trace after adding a ConsoleTraceListener
public class Program
{
public static void Main(string[] args)
{
// By default, console apps may not show Debug/Trace. Add a listener.
Trace.Listeners.Clear();
Trace.Listeners.Add(new ConsoleTraceListener());
Debug.WriteLine("Debug: only in debug builds (often)");
Trace.WriteLine("Trace: in all builds (commonly)");
Trace.TraceInformation("Info message");
Trace.TraceWarning("Warning message");
Trace.TraceError("Error message");
}
}
TraceSource gösterimi
TraceSource bir günlükleyiciyi adlandırır ve SourceLevels değerine göre filtreler; iletileri gruplamak için kullanışlıdır.
using System;
using System.Diagnostics;
// Demo: TraceSource can group logs by name and level.
public class Program
{
public static void Main(string[] args)
{
var src = new TraceSource("Calc", SourceLevels.Information);
src.Listeners.Clear();
src.Listeners.Add(new ConsoleTraceListener());
src.TraceEvent(TraceEventType.Information, 1001, "Starting");
src.TraceEvent(TraceEventType.Warning, 1002, "Low precision");
src.TraceEvent(TraceEventType.Error, 1003, "Divide by zero prevented");
src.Flush();
src.Close();
}
}
Küçük ILogger gösterimi
Bir arayüz, çağıranları kayıt hedefinden ayırır; daha sonra çağrı noktalarını değiştirmeden bir dosya veya uzak kayıt hedefi ekleyebilirsiniz.
using System;
// Minimal ILogger-like abstraction for beginners.
public interface ILogger
{
void Info(string msg);
void Warn(string msg);
void Error(string msg);
}
public class ConsoleLogger : ILogger
{
private readonly string _name;
public ConsoleLogger(string name) { _name = name; }
public void Info(string msg) { Console.WriteLine("[INFO] " + _name + " - " + msg); }
public void Warn(string msg) { Console.WriteLine("[WARN] " + _name + " - " + msg); }
public void Error(string msg) { Console.WriteLine("[ERROR] " + _name + " - " + msg); }
}
public class Program
{
public static void Main(string[] args)
{
ILogger log = new ConsoleLogger("Checkout");
log.Info("Start");
log.Warn("Slow network");
log.Error("Payment failed");
}
}
Bağlam ve zaman damgası
Günlükleri okurken ilişkilendirmeyi kolaylaştırmak için küçük bir bağlam (anahtar=değer) ve UTC zaman damgası ekleyin.
using System;
// Add a timestamp and tiny key=value context.
public interface ILogger
{
void Info(string msg, string contextKey, string contextValue);
}
public class ConsoleLogger : ILogger
{
private readonly string _name;
public ConsoleLogger(string name) { _name = name; }
public void Info(string msg, string key, string value)
{
string stamp = DateTime.UtcNow.ToString("u"); // 2009-06-15 13:45:30Z
Console.WriteLine(stamp + " [INFO] " + _name + " " + key + "=" + value + " :: " + msg);
}
}
public class Program
{
public static void Main(string[] args)
{
ILogger log = new ConsoleLogger("Search");
log.Info("Query executed", "q", "apple");
log.Info("Cache miss", "userId", "42");
}
}
İpuçları ve iyi uygulamalar
İpuçları:
- Birkaç düzey seçin (Bilgi/Uyarı/Hata)
- Hata ayıklama ve izleme için en az bir dinleyici ekleyin
- İletileri kısa tutun; küçük bağlam çiftleri ekleyin
- Gizli bilgileri günlüğe kaydetmeyin
Günlükleme soyutlaması neden kullanılır?
Özet
Özet: Çıktıyı görmek için dinleyicilerle birlikte hata ayıklama/izleme kullanın ve kayıt hedefleri iş koduna dokunmadan değiştirilebilsin diye çağrıları küçük bir günlükleyici arayüzünün arkasına alın.
Sıkça Sorulan Sorular
“Günlük kaydı soyutlamaları, Debug/Trace” dersi ücretsiz mi?
Evet — “Günlük kaydı soyutlamaları, Debug/Trace” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 3 dersten oluşur.
“Günlük kaydı soyutlamaları, Debug/Trace” dersinde ne öğreneceğim?
System.Diagnostics Debug/Trace yapılarını kullanın, dinleyiciler ekleyin ve uygulama kodunu veri hedeflerinden ayırmak için ILogger tarzı küçük bir soyutlama oluşturun. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C# Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 1. dersidir.
“Günlük kaydı soyutlamaları, Debug/Trace” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Günlük kaydı soyutlamaları, Debug/Trace
- Temel profil oluşturma ve izler (kavramlar)
- Koruma ve doğrulama kalıpları