0Pricing
Python Academy · Ders

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")  # shown

Gü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 automatically

extra= 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-enable

Gü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 handlers

Kö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

  1. logging Modülünün Temelleri
  2. İşleyiciler, Biçimlendiriciler ve Filtreler
  3. Yapılandırılmış Günlükleme
  4. pdb ile Hata Ayıklama
← Python Academy Sayfasına Dön