Abstraksi logging, Debug/Trace
Gunakan Debug/Trace dari System.Diagnostics, tambahkan listener, dan buat abstraksi kecil bergaya ILogger untuk memisahkan kode aplikasi dari tujuan keluaran log.
Abstraksi logging, Debug/Trace adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 3 pelajaran total.
Alasan menggunakan pencatatan log
Tujuan:
- Kirim pesan dengan Debug dan Trace
- Tambahkan pendengar untuk melihat keluaran
- Perkenalkan abstraksi pencatatan log yang kecil
- Pilih tingkat dan pemformatan sederhana
Dasar-dasar Debug/Trace
Debug digunakan untuk pengembangan; Trace digunakan pada semua build. Tambahkan ConsoleTraceListener untuk melihat pesan dalam aplikasi konsol.
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");
}
}
Demo TraceSource
TraceSource memberi nama pada pencatat dan memfilter berdasarkan SourceLevels; ini berguna untuk mengelompokkan pesan.
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();
}
}
Demo kecil ILogger
Antarmuka memisahkan pemanggil dari penampung; nantinya Anda dapat menambahkan penampung berkas atau jarak jauh tanpa mengubah lokasi pemanggilan.
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");
}
}
Konteks & stempel waktu
Tambahkan konteks kecil (key=value) dan stempel waktu UTC agar korelasi lebih mudah saat membaca log.
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");
}
}
Kiat & kebersihan
Kiat:
- Pilih beberapa tingkat (Info/Warn/Error)
- Tambahkan setidaknya satu pendengar untuk Debug/Trace
- Buat pesan tetap singkat; tambahkan pasangan konteks kecil
- Jangan mencatat rahasia
Alasan menggunakan abstraksi pencatatan log
Rangkuman
Rangkuman: Gunakan Debug/Trace dengan pendengar untuk melihat keluaran, lalu bungkus pemanggilan di balik antarmuka pencatat kecil agar penampung dapat diubah tanpa menyentuh kode bisnis.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Abstraksi logging, Debug/Trace” gratis?
Ya — teks lengkap “Abstraksi logging, Debug/Trace” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 3 pelajaran total.
Apa yang akan aku pelajari di “Abstraksi logging, Debug/Trace”?
Gunakan Debug/Trace dari System.Diagnostics, tambahkan listener, dan buat abstraksi kecil bergaya ILogger untuk memisahkan kode aplikasi dari tujuan keluaran log. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai C# Academy?
Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 3.
Berapa lama pelajaran “Abstraksi logging, Debug/Trace” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?
Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Abstraksi logging, Debug/Trace
- Pembuatan profil & jejak dasar (konsep)
- Pola penjagaan & validasi