Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 HEMEN TIKLA!
[NODE JS] Console Metodları ile Debug Yapma
Selam dostlar. Bugün Node.js'te debug yapmanın en temel ve en çok kullanılan yolu olan console metodlarından bahsedeceğiz. Çoğu kişi sadece console.log bilir ama console nesnesinin altında inanılmaz kullanışlı metodlar var. Ben yıllarca sadece console.log kullandım, sonra diğer metodları keşfedince "neden daha önce öğrenmedim" dedim.
console.log Ötesine Geçmek
console.log hepimizin ekmek teknesi, buna bir şey diyemem. Ama production kodunda console.log bırakmak kötü bir pratik. Debug yaparken kullanın ama işiniz bitince temizleyin. Ben genelde eslint'te no-console kuralını açık tutuyorum ama console.warn ve console.error'a izin veriyorum çünkü bunların production'da da yeri var.
Şimdi gelin console nesnesinin tüm önemli metodlarını inceleyelim. Bu metodlar Node.js'e özel değil, tarayıcıda da var ama Node.js'te bazıları biraz farklı davranıyor.
JavaScript:
// === CONSOLE METODLARI ===
// 1. console.log - Standart çıktı
console.log('Basit mesaj');
console.log('Birden fazla', 'parametre', 'verilebilir');
console.log('Sayı:', 42, 'Boolean:', true);
// Format specifiers
console.log('Merhaba %s, yaşın %d', 'Ahmet', 25);
console.log('Yüzde: %d%%', 85);
console.log('Obje: %o', { isim: 'test', deger: 123 });
console.log('JSON: %j', { a: 1, b: [2, 3] });
// 2. console.error - Hata çıktısı (stderr'e yazar)
console.error('Bu bir hata mesajı!');
console.error('Hata kodu: %d', 500);
// 3. console.warn - Uyarı mesajı (stderr'e yazar)
console.warn('Dikkat! Bu fonksiyon deprecated.');
console.warn('Bellek kullanımı yüksek: %d MB', 1024);
// 4. console.info - Bilgi mesajı (stdout'a yazar)
console.info('Sunucu başlatılıyor...');
console.info('Port: %d', 3000);
// 5. console.debug - Debug mesajı
// NODE_DEBUG ortam değişkeni ile kontrol edilir
console.debug('Debug bilgisi: bağlantı havuzu boyutu = 10');
// 6. console.table - Tablo formatında çıktı
const kullanicilar = [
{ isim: 'Ahmet', yas: 28, sehir: 'İstanbul' },
{ isim: 'Ayşe', yas: 24, sehir: 'Ankara' },
{ isim: 'Mehmet', yas: 32, sehir: 'İzmir' },
{ isim: 'Fatma', yas: 27, sehir: 'Bursa' }
];
console.table(kullanicilar);
// Belirli sütunları gösterme
console.table(kullanicilar, ['isim', 'sehir']);
// 7. console.dir - Nesneyi detaylı gösterme
const karmasikObje = {
seviye1: {
seviye2: {
seviye3: {
seviye4: {
deger: 'derin veri'
}
}
}
}
};
console.dir(karmasikObje, { depth: null, colors: true });
// depth: null -> tüm seviyeleri gösterir
// colors: true -> renkli çıktı
// 8. console.count ve console.countReset - Sayaç
function islemYap(tip) {
console.count(tip);
}
islemYap('GET'); // GET: 1
islemYap('POST'); // POST: 1
islemYap('GET'); // GET: 2
islemYap('GET'); // GET: 3
islemYap('POST'); // POST: 2
console.countReset('GET');
islemYap('GET'); // GET: 1 (sıfırlandı)
Zamanlama ve Gruplama
Console'un zamanlama metodları performans ölçümü için harika. Özellikle hangi fonksiyonun ne kadar sürdüğünü anlamak istediğinizde çok işe yarıyor. Ben production'a çıkmadan önce kritik fonksiyonların süresini bu şekilde ölçüyorum.
Gruplama ise iç içe log mesajlarını düzenli görmek için kullanılır. Özellikle bir istek geldiğinde o istekle ilgili tüm logları gruplamak çok faydalı. Loglar birbirine karışmaz ve okumak çok daha kolay olur.
JavaScript:
// 9. console.time, console.timeEnd, console.timeLog - Zamanlama
console.time('dizi-islemi');
const buyukDizi = [];
for (let i = 0; i < 1000000; i++) {
buyukDizi.push(Math.random());
}
console.timeLog('dizi-islemi', '-> Dizi oluşturuldu');
buyukDizi.sort((a, b) => a - b);
console.timeLog('dizi-islemi', '-> Dizi sıralandı');
const toplam = buyukDizi.reduce((acc, val) => acc + val, 0);
console.timeEnd('dizi-islemi'); // Toplam süreyi yazdırır
// 10. console.group ve console.groupEnd - Gruplama
console.group('Kullanıcı İşlemleri');
console.log('Kullanıcı girişi başarılı');
console.log('Oturum oluşturuldu');
console.group('Yetki Kontrolü');
console.log('Admin yetkisi: var');
console.log('Modül erişimi: tam');
console.groupEnd();
console.log('Dashboard yükleniyor');
console.groupEnd();
// console.groupCollapsed - Varsayılan kapalı grup (tarayıcıda)
console.groupCollapsed('Detaylı Bilgiler');
console.log('Bu bilgiler varsayılan olarak gizli');
console.log('Genişletmek için tıklayın');
console.groupEnd();
// 11. console.assert - Koşullu hata
const yas = 15;
console.assert(yas >= 18, 'Yaş 18'den küçük olamaz! Mevcut yaş: %d', yas);
// Koşul false ise hata mesajı yazdırır
const sonuc = 42;
console.assert(sonuc === 42, 'Sonuç yanlış!'); // Koşul true, yazdırmaz
// 12. console.trace - Stack trace gösterme
function fonksiyonA() {
fonksiyonB();
}
function fonksiyonB() {
fonksiyonC();
}
function fonksiyonC() {
console.trace('Buraya nasıl geldik?');
}
fonksiyonA();
// 13. console.clear - Ekranı temizle
// console.clear(); // Terminali temizler
Pratik Debug Teknikleri
Şimdi gerçek hayatta nasıl kullanacağınızı göstereyim. Mesela bir API endpoint'inde sorun var ve neyin yanlış gittiğini bulmak istiyorsunuz. Sadece console.log atmak yerine yapılandırılmış bir debug yaklaşımı çok daha etkili. Ben genellikle timestamp, context ve seviye bilgisi ekliyorum.
Benden söylemesi, production'da console.log yerine Winston, Pino veya Bunyan gibi bir logger kütüphanesi kullanın. Ama geliştirme ortamında ve hızlı debug için console metodları gayet yeterli. Önemli olan doğru metodu doğru yerde kullanmak. console.error'u gerçek hatalar için, console.warn'u uyarılar için, console.table'ı veri listelemeleri için kullanın. Bu alışkanlığı edinirseniz debug süreciniz çok daha verimli olur.
Kolay gelsin, bir sonraki konuda görüşmek üzere.
Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)
Benzer konular
- Cevaplar
- 3
- Görüntüleme
- 1K