CodeBlanks Logo Icon CodeBlanks

FileHandler

FileHandler ile dosyaya yazmayı öğrenirsin.

FileHandler

logging.FileHandler, günlükleri bir dosyaya yazar. filename parametresi dosya yolunu alır; günlükleyiciye addHandler ile eklenir.

import logging

handler = logging.FileHandler("app.log")
handler.setFormatter(logging.Formatter("%(levelname)s:%(message)s"))
logger = logging.getLogger("myapp")
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
logger.info("merhaba")  # app.log'a yazılır

Dosya yolunu uygulama dizinine göre verebilirsin; uygulama her çalıştığında günlükler dosyada birikir.

işleyici ekleme

İşleyici, logger.addHandler(handler) ile günlükleyiciye eklenir. Bir günlükleyiciye birden çok işleyici eklenebilir; örneğin hem dosyaya hem ekrana yazmak için iki işleyici kullanırsın.

logger.addHandler(logging.FileHandler("app.log"))
logger.addHandler(logging.StreamHandler())

İşleyicilerin düzeyleri ayrı ayrı ayarlanabilir; bu, ekrana yalnızca hataları, dosyaya tüm iletileri yazmak için kullanışlıdır. İşleyiciyi kaldırmak için removeHandler çağrılır.

Uygulama FileHandler ile dosyaya yaz ve oku

import logging ile başla. handler = logging.FileHandler("app.log") tanımla. handler.setFormatter(logging.Formatter("%(levelname)s:%(message)s")) ekle. logger = logging.getLogger("myapp") al. logger.addHandler(handler) ve logger.setLevel(logging.DEBUG) yap. logger.info("merhaba") yaz. Sonra open("app.log", "r", encoding="utf-8") ile dosyayı oku ve print(f.read().strip()) ile içeriği yazdır.

Başlangıç kodu

main.py
# logging modülünü içe aktar
# 'app.log' dosyasına bir FileHandler tanımla
# işleyiciye biçim ver (level:message)
# 'myapp' günlükleyicisini al, işleyici ekle ve düzey DEBUG yap
# info ile 'merhaba' yaz
# dosyayı oku ve içeriğini yazdır

Örnek çözüm

main.py
import logging

handler = logging.FileHandler("app.log")
handler.setFormatter(logging.Formatter("%(levelname)s:%(message)s"))
logger = logging.getLogger("myapp")
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
logger.info("merhaba")

with open("app.log", "r", encoding="utf-8") as f:
    print(f.read().strip())

Beklenen çıktı

INFO:merhaba

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 FileHandler hangi parametreyle dosya yolunu alır?

  • output
  • path
  • file
  • filename Doğru cevap

Açıklama: FileHandler ilk parametre olarak dosya yolunu alır (filename).

2 FileHandler çağrısını tamamla

Soru
import logging

handler = logging.____("app.log")
Cevap
import logging

handler = logging.FileHandler("app.log")

Açıklama: logging.FileHandler('app.log') ile dosya işleyici oluşturulur.

3 FileHandler kavramlarını eşleştir

Kavram Anlamı
FileHandler Dosyaya yazar
addHandler İşleyici ekler
setFormatter Biçim ayarlar
StreamHandler Ekrana yazar

İleri seviye bölümündeki tüm dersler