0Pricing
Python Academy · Ders

İşleyiciler, Biçimlendiriciler ve Filtreler

Günlük çıktısını dosyalara, akışlara ve özel hedeflere yönlendirin.

İşleyiciler, Biçimlendiriciler ve Filtreler, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 2. 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.

İşleyiciler Günlük Kayıtlarını Yönlendirir

Bir işleyici, günlük kayıtlarını bir hedefe gönderir: konsol, dosya, HTTP uç noktası ve benzeri. Bir günlükleyicide birden çok işleyici bulunabilir.

import logging

logger = logging.getLogger("myapp")
logger.setLevel(logging.DEBUG)

sh = logging.StreamHandler()
logger.addHandler(sh)

logger.info("Goes to console")

StreamHandler

StreamHandler, bir akışa (varsayılan olarak sys.stderr) yazar. Standart çıktı için sys.stdout aktarın.

import logging, sys

logger = logging.getLogger("out")
handler = logging.StreamHandler(sys.stdout)
logger.addHandler(handler)
logger.warning("printed to stdout")

FileHandler

FileHandler, kayıtları bir dosyanın sonuna ekler. Her çalıştırmada dosyanın üzerine yazmak için mode="w" kullanın.

import logging

logging.basicConfig(
    filename="app.log",
    filemode="a",
    level=logging.INFO,
    format="%(asctime)s %(levelname)s %(message)s"
)
logging.info("Persisted to disk")

RotatingFileHandler

Günlük dosyaları boyut sınırını aştığında otomatik olarak döndürün ve N yedek dosyayı koruyun.

from logging.handlers import RotatingFileHandler
import logging

handler = RotatingFileHandler(
    "app.log", maxBytes=1_000_000, backupCount=5
)
logging.getLogger().addHandler(handler)

TimedRotatingFileHandler

Günlük dosyalarını zamana göre (günlük, haftalık veya saatlik) döndürün; bu yöntem uzun süre çalışan hizmetler için idealdir.

from logging.handlers import TimedRotatingFileHandler
import logging

handler = TimedRotatingFileHandler(
    "app.log", when="midnight", backupCount=7
)
logging.getLogger().addHandler(handler)

Biçimlendiriciler

Bir Formatter, her günlük kaydının metin düzenini denetler. Bunu bir işleyiciye handler.setFormatter() ile bağlayın.

import logging

fmt = logging.Formatter(
    fmt="%(asctime)s %(levelname)-8s %(name)s — %(message)s",
    datefmt="%Y-%m-%dT%H:%M:%S"
)
handler = logging.StreamHandler()
handler.setFormatter(fmt)
logging.getLogger().addHandler(handler)

İşleyici Düzeyinde Filtreleme

Her işleyicinin kendi seviyesi vardır. Bir kaydın gönderilebilmesi için hem günlükleyici seviyesini hem de işleyici seviyesini geçmesi gerekir.

import logging

logger = logging.getLogger("app")
logger.setLevel(logging.DEBUG)   # logger passes DEBUG+

err_handler = logging.FileHandler("errors.log")
err_handler.setLevel(logging.ERROR)  # only ERROR+
logger.addHandler(err_handler)

Özel Filtreler

logging.Filter sınıfından türetin ve kayıtları herhangi bir ölçüte göre kabul etmek veya reddetmek için filter(record) metodunu geçersiz kılın.

import logging

class SensitiveFilter(logging.Filter):
    def filter(self, record):
        return "password" not in record.getMessage().lower()

handler = logging.StreamHandler()
handler.addFilter(SensitiveFilter())
logging.getLogger().addHandler(handler)

Filtreyle Ek Alanlar Ekleme

Filtreler, biçimlendirmeden önce ek alanlar eklemek için kaydı da değiştirebilir (örneğin istek kimliği).

import logging

class RequestIDFilter(logging.Filter):
    def __init__(self, request_id):
        self.request_id = request_id
    def filter(self, record):
        record.request_id = self.request_id
        return True

# fmt: "%(request_id)s %(message)s"

Tek Bir Günlükleyicide Birden Çok İşleyici

Aynı günlük kayıtlarını eş zamanlı olarak birden çok hedefe göndermek için birkaç işleyici ekleyin.

import logging

logger = logging.getLogger("multi")
logger.addHandler(logging.StreamHandler())             # console
logger.addHandler(logging.FileHandler("audit.log"))   # file
logger.setLevel(logging.INFO)
logger.info("Both destinations receive this")

Aktarımı Devre Dışı Bırakma

Kayıtların kök günlükleyiciye aktarılmasını ve iki kez günlüklenmesini durdurmak için logger.propagate = False ayarını yapın.

import logging

logger = logging.getLogger("mylib")
logger.propagate = False   # stays here, does not reach root
logger.addHandler(logging.StreamHandler())

Hızlı Kontrol

Bir Formatter'ı bir Handler'a bağlayan metot hangisidir?

Özet

İşleyiciler kayıtları yönlendirir, biçimlendiriciler kayıtların görünümünü düzenler, filtreler ise kayıtları seçerek geçirir veya engeller. Boyutla sınırlı günlükler için RotatingFileHandler, tarihe dayalı döndürme için TimedRotatingFileHandler kullanın.

Sıkça Sorulan Sorular

“İşleyiciler, Biçimlendiriciler ve Filtreler” dersi ücretsiz mi?

Evet — “İşleyiciler, Biçimlendiriciler ve Filtreler” 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.

“İşleyiciler, Biçimlendiriciler ve Filtreler” dersinde ne öğreneceğim?

Günlük çıktısını dosyalara, akışlara ve özel hedeflere yönlendirin. 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 2. dersidir.

“İşleyiciler, Biçimlendiriciler ve Filtreler” 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