Python'da hata ayıklama ve günlükleme
Hata izini okur, pdb ile adım adım ilerler, logging modülüyle yapılandırılmış ve sızıntısız günlükler üretir, üretimde sorun teşhis edersin.
Seviye 201 · 17 ders · 18 pratik lab
Dersler
Hata bulmak
- Hata izini okumak: zincirlenmiş hatalar
- print mi hata ayıklayıcı mı? breakpoint()
- pdb: kesme noktası, adım, yığın gezinme
- Çökme sonrası inceleme: pdb.pm ve faulthandler
- warnings modülü ve kullanımdan kalkma uyarıları
- Kısa görev: yanlış toplam veren betiği düzelt
Günlükleme
- logging: düzeyler, işleyiciler ve biçimleyiciler
- dictConfig ile günlük yapılandırması
- Dönen günlük dosyaları
- Yapılandırılmış JSON günlükleri
- Günlüklerde parola ve kişisel veri sızdırmamak
- Kısa görev: gürültülü servisin günlüklerini düzene sok
Üretimde teşhis
- sys.settrace ve trace modülüyle çağrıları izlemek
- tracemalloc ile bellek artışını bulmak
- Takılan süreç: yığın dökümü ve zaman aşımı
- Kısa görev: yavaşlayan işin nedenini günlükten bul
Bitirme
- Bitirme görevi: çöken arka plan işini teşhis et ve düzelt
Pratik lablar
- Ara sıra bozulan işi izle ve yakala: Yalnızca bazı girdilerde yanlış toplam üreten toplu işe hedefli DEBUG kayıtları ekle, hatalı kaydı pdb ile yakala ve düzeltmeyi testle kanıtla.
- Zincirli hata izinden kök nedeni bulmak: Üç katmanlı zincirli bir hata izini okuyup asıl hatanın çıktığı satırı bul ve düzelt.
- breakpoint() ile yanlış indirimi izlemek: İndirimi iki kez uygulayan sepet kodunda breakpoint() ile değişkenleri inceleyip hatalı satırı düzelt.
- Koşullu kesme noktasıyla bozuk kaydı yakalamak: On bin kayıttan yalnızca birinde bozulan dönüşümü pdb koşullu kesme noktasıyla yakala ve nedenini düzelt.
- Çöken işi ölüm sonrası incelemek: Derin özyineleme yüzünden çöken işi faulthandler ve pdb.pm ile incele, özyinelemeyi döngüye çevirerek düzelt.
- print çağrılarını logging'e taşımak: Betikteki print çağrılarını uygun düzeylerde logging çağrılarına çevir; uyarılar dosyaya, hatalar ayrıca stderr'e gitsin.
- Modül bazında günlük düzeyi ayarlamak: dictConfig ile gürültülü bir modülü WARNING'e, kendi modülünü DEBUG'a çeken ve çift satır yazmayan bir yapılandırma yaz.
- Günlük dosyasını boyuta göre döndürmek: RotatingFileHandler ile bir megabaytta dönen ve üç yedek tutan günlük kur; testte dosya sayısı sınırı aşmasın.
- Yapılandırılmış JSON günlük biçimleyicisi: Zaman, düzey, mesaj ve extra alanlarını tek satır JSON yazan bir Formatter yaz; istisna izleri de alana girsin.
- Günlükten parolaları süzmek: password= ve token= değerlerini yıldızlayan bir logging.Filter yaz ve tüm işleyicilere uygula.
- Kişisel veriyi günlüğe yazan satırları bulmak: Defne Finans'ın ödeme modülünde kimlik ve kart numarası yazan günlük çağrılarını bul, maskele ve testle doğrula.
- Tekrarlanan hata satırlarını seyreltmek: Aynı hatayı saniyede yüzlerce kez yazan servise tekrarları sayıp dakikada bir özetleyen bir süzgeç ekle.
- Büyüyen belleğin kaynağını bulmak: tracemalloc anlık görüntülerini karşılaştırarak her istekte büyüyen listeyi bul ve sızıntıyı kapat.
- Takılan sürecin yığın dökümünü almak: Yanıt vermeyen bir işe faulthandler ile sinyalle yığın dökümü özelliği ekle ve nerede beklediğini bul.
- Adım sürelerinden yavaşlayan aşamayı bulmak: Bir veri aktarım işinin günlüklerinden adım sürelerini çıkar, yavaşlayan aşamayı belirle ve gereksiz tekrar sorguyu kaldır.
- Yutulan hatanın izini geri getirmek: Geniş bir except bloğunun yalnızca kısa bir ileti yazdığı işte hatanın tam izini kayda geçir ve istisnayı yeniden yükselt; izden hatalı satırı bulup düzelt.
- Günlük dosyasını her gün döndürmek: Tek dosyaya yazan uygulamaya gece yarısı dönen ve yedi günlük yedek tutan bir zamanlı döndürme işleyicisi ekle.
- Dönen günlükleri sıkıştırıp eskileri silmek: Döndürme işleyicisini dönen dosyaları gzip ile sıkıştıracak şekilde özelleştir ve toplam boyut sınırını aşan en eski arşivleri sil; yazım sırasında kayıt kaybolmasın.
Kurs hakkında
Hata izini okur, pdb ile adım adım ilerler, logging modülüyle yapılandırılmış ve sızıntısız günlükler üretir, üretimde sorun teşhis edersin.
Ne öğreneceksin
- Hata bulmak
- Günlükleme
- Üretimde teşhis
- Bitirme
Ön koşullar
Aynı yolun 101 düzeyindeki kurslarını bitirmiş olmak ya da o konuları biliyor olmak yeterlidir.
Lab ortamı
Dersler, tarayıcında açılan sana özel bir Kali Linux terminalinde geçer. Kurulum gerekmez; lab her derste temiz başlar.
Sık sorulan sorular
- Bu kurs benim düzeyime uygun mu?
- Kurs 201 düzeyindedir; daha düşük düzeydeki kursların konularını bildiğin varsayılır.
- Kurulum gerekir mi?
- Hayır. Her ders tarayıcında açılan sana özel bir lab ortamında geçer.
- Dersler nasıl işleniyor?
- Her ders 8 ile 10 adımdan ve bir kısa sınavdan oluşur. İlk adımlarda yazman gereken komut gösterilir, sonraki adımlarda yardım azalır; iki denemede takılırsan çözüm açılır.
- Ücretsiz deneyebilir miyim?
- Evet. Her kursun ilk üç dersi ücretsizdir.