logging Modülünün Temelleri
Günlükçüleri yapılandırın, düzeyleri ayarlayın ve iletileri doğru biçimde üretin.
logging Modülünün Temelleri, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 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, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.
Neden Yazdırma Yerine Günlükleme?
logging modülü önem derecesi seviyeleri, yapılandırılabilir çıktı hedefleri ve zaman damgaları sağlar; ayrıca kodu değiştirmeden çıktıyı susturmanıza olanak tanır.
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug("debug message")
logging.info("info message")
logging.warning("warning message")
logging.error("error message")
logging.critical("critical message")Günlükleme Seviyeleri
Python, önem derecesi artacak şekilde beş standart seviye tanımlar: DEBUG, INFO, WARNING, ERROR, CRITICAL. Yalnızca yapılandırılan seviyedeki veya daha yüksek seviyedeki iletiler gönderilir.
import logging
# Numeric values:
# DEBUG = 10
# INFO = 20
# WARNING = 30
# ERROR = 40
# CRITICAL = 50
logging.basicConfig(level=logging.WARNING)
logging.debug("hidden") # not shown
logging.warning("shown") # shownGünlükleyici Alma
Her modülde logging.getLogger(__name__) kullanın. Bu, modül yapısıyla eşleşen bir hiyerarşi oluşturur.
import logging
logger = logging.getLogger(__name__)
def process(data):
logger.info("Processing %d items", len(data))
return [x * 2 for x in data]basicConfig Seçenekleri
basicConfig, kök günlükleyiciyi hızlıca yapılandırır. Yaygın anahtar sözcük bağımsız değişkenleri: level, format, filename, filemode.
import logging
logging.basicConfig(
level=logging.DEBUG,
format="%(asctime)s %(levelname)s %(name)s — %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
)Günlük Biçimi Alanları
Temel biçim alanları: %(levelname)s, %(name)s, %(message)s, %(asctime)s, %(filename)s, %(lineno)d.
import logging
fmt = "%(asctime)s | %(levelname)-8s | %(name)s:%(lineno)d | %(message)s"
logging.basicConfig(level=logging.DEBUG, format=fmt)
logging.info("Server started on port 8080")İstisnaları Günlükleme
Tam geri izlemeyle birlikte iletiyi günlüklemek için bir except bloğunun içinde logger.exception() kullanın.
import logging
logger = logging.getLogger(__name__)
try:
1 / 0
except ZeroDivisionError:
logger.exception("Division failed")
# Logs message + traceback automaticallyextra= ile Ek Bağlam
Günlük kaydına özel alanlar eklemek için extra= olarak bir dict aktarın.
import logging
logger = logging.getLogger(__name__)
logging.basicConfig(
format="%(asctime)s %(levelname)s [%(user)s] %(message)s"
)
logger.info("Login successful", extra={"user": "alice"})Tembel Dize Biçimlendirme
Biçim bağımsız değişkenlerini ayrı ayrı aktarın — dizeleri önceden biçimlendirmeyin. Böylece ileti filtrelenirse dize oluşturma maliyetinden kaçınırsınız.
import logging
logger = logging.getLogger(__name__)
# BAD (always builds the string):
logger.debug(f"Processing {len(data)} items")
# GOOD (only builds if DEBUG is enabled):
logger.debug("Processing %d items", len(data))Günlüklemeyi Devre Dışı Bırakma
Genel olarak o seviyeye kadar olan tüm iletileri bastırmak için logging.disable(level) çağrısını kullanın; bu, sınamalarda yararlıdır.
import logging
logging.disable(logging.CRITICAL) # suppress everything
# All log calls now silently do nothing
logging.disable(logging.NOTSET) # re-enableGünlükleyici Hiyerarşisi
Günlükleyici adlarında ayraç olarak noktalar kullanılır. propagate=False olmadıkça alt günlükleyiciler üst günlükleyicilere aktarım yapar.
import logging
parent = logging.getLogger("myapp")
child = logging.getLogger("myapp.database")
# child propagates to parent by default
child.warning("DB slow") # also appears in myapp's handlersKök Günlükleyici
logging.warning() ve benzerlerinden gelen kök günlükleyici, tüm günlükleyicilerin üst öğesidir. Kök günlükleyiciyi basicConfig ile veya doğrudan işleyiciler ekleyerek yapılandırın.
import logging
root = logging.getLogger() # root logger
root.setLevel(logging.DEBUG)
handler = logging.StreamHandler()
root.addHandler(handler)Hızlı Kontrol
Tam geri izlemenin otomatik olarak eklenmesi için bir except bloğunun içinde hangi günlükleme metodunu kullanmalısınız?
Özet
getLogger(__name__) ile adlandırılmış günlükleyiciler kullanın, basicConfig aracılığıyla yapılandırın, biçim bağımsız değişkenlerini tembel olarak aktarın ve hata geri izlemeleri için logger.exception() kullanın. Günlükleyiciler, kök günlükleyicide başlayan bir hiyerarşi oluşturur.
Sıkça Sorulan Sorular
“logging Modülünün Temelleri” dersi ücretsiz mi?
Evet — “logging Modülünün Temelleri” 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 Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.
“logging Modülünün Temelleri” dersinde ne öğreneceğim?
Günlükçüleri yapılandırın, düzeyleri ayarlayın ve iletileri doğru biçimde üretin. Python 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.
Python Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Python 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, 4 dersinin 1. dersidir.
“logging Modülünün Temelleri” 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 Python Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Python 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
- logging Modülünün Temelleri
- İşleyiciler, Biçimlendiriciler ve Filtreler
- Yapılandırılmış Günlükleme
- pdb ile Hata Ayıklama