Ana içeriğe atla
LogBrew, geliştiriciler ve kodlama asistanları için bir gözlemlenebilirlik platformudur. Cömert bir ücretsiz planı vardır ve kart gerektirmez. Bu rehber standart logging modülüyle Python loglamayı, 5 Python log seviyesini, Python hata yönetimini ve yaygın Python hata türlerini anlatır. Son bölümler aynı logları ve çökmeleri logbrew-sdk 0.1.29 ile LogBrew’e gönderir. Her örnek Python 3.13 üzerinde çalıştırıldı. Her çıktı bloğu gerçek çıktıyı gösterir. Flask uygulaması için bunun yerine Flask loglama rehberini kullanın. O rehber aynı loglama yapılandırmasına istek izlerini ekler.

İlk Python logunuzu yazın

Bu dosyayı app.py olarak kaydedin. logging.basicConfig() fonksiyonunu programın giriş noktasında bir kez çağırın. Her modülde adlandırılmış bir logger alın.
python3 app.py komutunu çalıştırın. Çıktı standart hataya yazılır.
Seviye INFO olduğu için debug kaydı görünmez. logger.exception() metodu ERROR seviyesinde log yazar ve traceback’i ekler. Bu metodu yalnızca bir except bloğu içinde çağırın. Değerleri "payment retry %d of %d", 2, 3 örneğindeki gibi argüman olarak verin. Python mesajı yalnızca bir handler kaydı kabul ettiğinde oluşturur. Mesaj şablonu her yeniden denemede aynı kalır, bu yüzden onu arayabilirsiniz.

Python log seviyeleri

Logger bir kaydı yalnızca kaydın seviyesi logger’ın seviyesine eşit veya ondan yüksekse gönderir. Handler daha yüksek ikinci bir seviye ayarlayabilir. Kök logger WARNING seviyesiyle başlar. Yeni bir logger’ın seviyesi NOTSET (0) olur ve üst logger’ın seviyesini kullanır. Canlı ortamda INFO ayarlayın. DEBUG seviyesini yalnızca geliştirmede veya kısa bir tanı için ayarlayın.
İlk satır tek bir modülün debug kayıtlarını gösterir. İkinci satır bir kütüphanenin gürültüsünü kaldırır.

Logger, handler ve formatter

  • Logger çağrıyı alır. Logger adının modül yoluyla eşleşmesi için logging.getLogger(__name__) kullanın.
  • Handler kayıtları konsol, dosya veya LogBrew gibi bir hedefe gönderir.
  • Formatter bir kaydı metne dönüştürür.
Bir kütüphane loglamayı yapılandırmamalıdır. Kendi logger’ına yalnızca bir logging.NullHandler() ekler. Handler’ları ve seviyeleri uygulama bir kez yapılandırır. Büyük bir yapılandırma için logging.config.dictConfig() kullanın.

Python hata yönetimi

Ele alabileceğiniz en özel istisnayı yakalayın. Yalnızca başarı durumunda çalışan kod için else, her zaman çalışan kod için finally kullanın. Asıl nedeni korumak için raise ... from error kullanın. Bu dosyayı orders.py olarak kaydedin.
Çıktı zincirdeki iki istisnayı da gösterir.
Her istisna için bu kurallara uyun.
  • Bir istisnayı ele aldığınız yerde bir kez loglayın. Onu her katmanda loglayıp yeniden fırlatmayın, çünkü her katman yinelenen bir kayıt ekler.
  • except Exception: pass yazmayın. Bir hatayı yok sayarsanız onu nedeniyle birlikte WARNING veya daha yüksek bir seviyede loglayın.
  • BaseException yerine Exception yakalayın. BaseException ayrıca KeyboardInterrupt ve SystemExit istisnalarını da yakalar. Bu ikisi programı bilerek durdurur.
  • Çağıranların ele alması gereken hatalar için OrderError örneğindeki gibi kendi istisna sınıflarınızı tanımlayın.

Birden fazla hatayı bildirin

Python 3.11 ve sonrası bir ExceptionGroup fırlatabilir. Tek bir kontrol birden fazla hata bulduğunda onu kullanın. Her türü except* ile ele alın.

Yaygın Python hata türleri

Bir programın ele alabileceği tüm yerleşik hatalar Exception sınıfından türer. Bu tablo en sık gördüğünüz Python hatalarını ve her biri için ilk kontrolü listeler. KeyboardInterrupt ve SystemExit istisnaları Exception sınıfından değil, BaseException sınıfından türer. Bunlar kodunuzdaki hatalar değildir.

Python loglarını LogBrew’e gönderin

LogBrewLoggingHandler standart bir loglama handler’ıdır. Kabul ettiği her kaydı LogBrew’e gönderir. Konsol handler’ı değişmez.
1

Bir proje anahtarı oluşturun

CLI ile giriş yapın. Bir proje oluşturun. Projenin alım anahtarını (ingest key) yalnızca sahibinin okuyabildiği bir dosyada saklayın.
CLI anahtarı ekrana yazdırmaz. Canlı ortamda platformunuzun gizli anahtar yöneticisini kullanın.
2

SDK'yı kurun

Uygulamanın sanal ortamını etkinleştirin. Ardından paketi kurun. Paket Python 3.10 veya üstünü gerektirir.
3

Anahtarı ve dağıtım bilgilerini ayarlayın

İstemci her olaya hizmeti, ortamı ve sürümü ekler.
4

Handler'ı ekleyin

Bu dosyayı worker.py olarak kaydedin. İstemciyi oluşturmadan önce logging.basicConfig() fonksiyonunu çağırın. İstemci kök logger’a bir handler ekler. Kök logger’da zaten bir handler varsa basicConfig() hiçbir şey yapmaz.
HttpTransport() olayları arka planda, ilk olaydan 1 saniye sonra veya 50 olayda gönderir. client.shutdown() kalan olayları gönderir ve istemciyi kapatır.
5

Programı çalıştırın

Konsol çıktısı değişmez. LogBrew her kayıt için 1 log olayı alır. Aşağıda ilk olay, paylaşılan çalışma zamanı bağlamı olmadan gösterilir.
extra={...} içindeki ilkel değerler meta veri olur. İkinci olayda exceptionName değeri KeyError, exceptionMessage değeri 'seats' olur. Tam traceback metnini göndermek için handler’ı include_exception_text=True ile oluşturun.
6

Logları geri okuyun

Eşleşen bir okuma, LogBrew’ün logları sakladığını gösterir. CI’dan veya bir kodlama asistanından okumak için proje okuma anahtarı (read key) kullanın. Kurulumunuzu doğrulayın sayfasına bakın.

LogBrew’e hangi kayıtların gideceğini seçin

Daha az kayıt göndermek için handler’a kendi seviyesini verin. Konsol yine INFO ve üstünü alır.
Python seviyeleri LogBrew seviyelerine dönüşür. Asıl seviye adı ve sayısı meta veride kalır.

Python çökmelerini sorun olarak bildirin

install_process_error_capture(client) betiklerde, worker süreçlerinde, başlangıç kodunda ve iş parçacıklarında ele alınmamış istisnaları bildirir. Her çökme 1 sorun olur. Sorun istisna türünü, mesajı, yığın çerçevelerini ve zincirlenmiş nedenleri içerir. Python traceback’i yine yazdırır ve önceki gibi çıkar. Bu dosyayı startup.py olarak kaydedin ve çalıştırın.
LogBrew bir sorun alır. Sorunun başlığı FileNotFoundError, seviyesi critical, mekanizması python.excepthook olur. Çerçeveler dosya adını, satırı ve fonksiyonu içerir ama tam yolu içermez. Bir iş parçacığındaki çökmenin seviyesi error olur. Python çıkmadan önce SDK teslim için en fazla 2 saniye bekler.
Sorun istisna mesajını içerir. İstisna mesajlarına veya log mesajlarına kimlik bilgisi ya da kişisel veri koymayın. Yakalanan verileri denetleyin sayfasına bakın.

Sorunları giderin

Web uygulamaları için Flask loglama rehberine bakın. Log formatı seçmek için Yapılandırılmış loglama sayfasına bakın. Diğer çalışma zamanları için SDK entegrasyonu rehberine bakın.