logging — olay günlükleme

Bu modül, standart Python logging paketinin MicroPython için uyarlanmış hafif bir alt kümesini sağlar. Hiyerarşik olarak adlandırılmış Logger nesneleri aracılığıyla seviyeli günlüklemeyi, küçük bir işleyici kümesini (StreamHandler, FileHandler), Formatter aracılığıyla printf tarzı biçimlendirmeyi ve kök günlükleyici üzerinde çalışanlara eşdeğer modül düzeyinde kolaylık fonksiyonlarını destekler.

Modül, bilinen CPython API’sini yeterince yakından takip eder; öyle ki standart kütüphane için yazılmış basit uygulamalar değişiklik gerektirmeden çalışmalıdır. Filtreler, çok süreçli kilitleme, yapılandırma dosyası biçimi ve çoğu işleyici sınıfı sağlanmaz.

Seviye Sabitleri

logging.CRITICAL: int

Sayısal değer 50. Kurtarılamaz hatalar için kullanılır.

logging.ERROR: int

Sayısal değer 40. Ciddi sorunlar için kullanılır.

logging.WARNING: int

Sayısal değer 30. Yeni yapılandırılmış bir kök günlükleyici için varsayılan seviye.

logging.INFO: int

Sayısal değer 20. Onay mesajları için kullanılır.

logging.DEBUG: int

Sayısal değer 10. İnce ayrıntılı tanılama çıktısı için kullanılır.

logging.NOTSET: int

Sayısal değer 0. Seviyesi yapılandırılmamış bir günlükleyiciyi belirtir (etkin seviye o zaman kök günlükleyiciden veya WARNING değerinden devralınır).

Fonksiyonlar

logging.getLogger(name: str | None = None) Logger

name altında kayıtlı Logger nesnesini döndürür, ilk kullanımda oluşturur. name None ise kök günlükleyici döndürülür. name="root" ile (veya name belirtilmeden) yapılan ilk çağrı, sys.stderr adresine yazan varsayılan bir StreamHandler eklemek için örtük olarak basicConfig çağırır.

logging.log(level: int, msg: str, *args) None

Kök günlükleyici üzerinde level seviyesinde bir mesaj günlükler. args, printf tarzı % biçimlendirmesi kullanılarak msg içine yerleştirilir; tek bir sözlük argümanı eşleme olarak kullanılır.

logging.debug(msg: str, *args) None

getLogger().debug(msg, *args) ile eşdeğerdir.

logging.info(msg: str, *args) None

getLogger().info(msg, *args) ile eşdeğerdir.

logging.warning(msg: str, *args) None

getLogger().warning(msg, *args) ile eşdeğerdir.

logging.error(msg: str, *args) None

getLogger().error(msg, *args) ile eşdeğerdir.

logging.critical(msg: str, *args) None

getLogger().critical(msg, *args) ile eşdeğerdir.

logging.exception(msg: str, *args, exc_info: bool | BaseException = True) None

getLogger().exception(msg, *args, exc_info=exc_info) ile eşdeğerdir. Mesajı ERROR seviyesinde günlükler ve exc_info doğruysa ek olarak etkin istisnanın geri izlemesini biçimlendirir. exc_info kendisi bir BaseException ise, o istisnanın geri izlemesi kullanılır; aksi takdirde mevcut olduğunda sys.exc_info() başvurulur.

logging.shutdown() None

Bilinen her günlükleyiciye eklenmiş her işleyiciyi kapatır ve günlükleyicileri unutur. Bu kanca mevcut olduğunda sys.atexit aracılığıyla otomatik olarak kaydedilir.

logging.addLevelName(level: int, name: str) None

Formatter nesnesinin bunu %(levelname)s aracılığıyla işleyebilmesi için metinsel name ile sayısal level değerini ilişkilendirir.

logging.basicConfig(filename: str | None = None, filemode: str = 'a', format: str | None = None, datefmt: str | None = None, level: int = WARNING, stream=None, encoding: str = 'UTF-8', force: bool = False) None

Kök günlükleyiciyi tek bir işleyici ile yapılandırır.

filename sağlanırsa filemode ve encoding kullanılarak bir FileHandler oluşturulur; aksi takdirde stream adresine yazan (varsayılan olarak sys.stderr) bir StreamHandler kullanılır.

format ve datefmt, yeni bir Formatter nesnesine aktarılır.

level, hem işleyicinin seviyesini hem de kök günlükleyicinin seviyesini ayarlar.

Kök günlükleyicinin zaten işleyicileri varsa, force True olmadıkça bu fonksiyon hiçbir işlem yapmaz; bu durumda mevcut işleyiciler kapatılır ve değiştirilir.

Sınıflar

class logging.Logger(name: str, level: int = NOTSET)

Adlandırılmış bir günlükleyici. Günlükleyicileri doğrudan oluşturmak yerine getLogger aracılığıyla oluşturun; böylece getLogger, aynı ad için aynı örneği döndürebilir.

name: str

Günlükleyicinin noktalı adı.

level: int

Yapılandırılmış sayısal seviye. 0 (NOTSET) “devral” anlamına gelir.

handlers: list

Bu günlükleyiciye eklenmiş Handler örneklerinin listesi. Boş olduğunda mesajlar kök günlükleyicinin işleyicilerine gönderilir.

setLevel(level: int) None

Günlükleyicinin eşik seviyesini ayarlar.

isEnabledFor(level: int) bool

level seviyesindeki bir mesaj bu günlükleyici tarafından işlenecekse True döndürür.

getEffectiveLevel() int

Şunlardan sıfır olmayan ilkini döndürür: bu günlükleyicinin seviyesi, kök günlükleyicinin seviyesi veya WARNING.

log(level: int, msg: str, *args) None

msg mesajını level seviyesinde günlükler. args, % operatörü ile msg içine yerleştirilir; ilk konumsal argüman bir sözlük ise eşleme olarak kullanılır.

debug(msg: str, *args) None

msg mesajını DEBUG seviyesinde günlükler.

info(msg: str, *args) None

msg mesajını INFO seviyesinde günlükler.

warning(msg: str, *args) None

msg mesajını WARNING seviyesinde günlükler.

error(msg: str, *args) None

msg mesajını ERROR seviyesinde günlükler.

critical(msg: str, *args) None

msg mesajını CRITICAL seviyesinde günlükler.

exception(msg: str, *args, exc_info: bool | BaseException = True) None

msg mesajını ERROR seviyesinde günlükler ve exc_info doğruysa biçimlendirilmiş geri izlemeyi ekler. exc_info bir BaseException örneği ise o istisnanın geri izlemesi işlenir; aksi takdirde etkin istisnaya sys.exc_info() aracılığıyla başvurulur.

addHandler(handler: Handler) None

handler nesnesini bu günlükleyiciye ekler.

hasHandlers() bool

Bu günlükleyiciye herhangi bir işleyici eklenmişse True döndürür.

class logging.Handler(level: int = NOTSET)

Tüm işleyiciler için temel sınıf. Alt sınıflar emit() yöntemini uygular.

level: int

İşleyicinin eşik seviyesi.

formatter: 'Formatter | None'

Etkin Formatter, ya da None.

setLevel(level: int) None

İşleyicinin eşik seviyesini ayarlar.

setFormatter(formatter: Formatter) None

formatter nesnesini bu işleyiciye ekler.

format(record: LogRecord) str

Yapılandırılmış biçimlendirici kullanılarak record nesnesini işler.

close() None

İşleyici tarafından tutulan kaynakları serbest bırakır. shutdown tarafından ve FileHandler kapatıldığında çağrılır.

class logging.StreamHandler(stream=None)

Biçimlendirilmiş kayıtları, ardından self.terminator (varsayılan olarak "\n") ile stream adresine yazan işleyici. stream varsayılan olarak sys.stderr değerini alır.

stream

Hedef akış nesnesi.

terminator: str

Her biçimlendirilmiş kaydın ardına eklenen dize. Varsayılan olarak "\n" değerini alır.

emit(record: LogRecord) None

Seviyesi işleyici eşiğini karşılıyorsa record nesnesini stream adresine yazar.

close() None

Alttaki akış bir flush yöntemi sunduğunda onu boşaltır.

class logging.FileHandler(filename: str, mode: str = 'a', encoding: str = 'UTF-8')

filename dosyasını verilen mode ve encoding ile açan ve biçimlendirilmiş kayıtları ona yazan StreamHandler alt sınıfı. Alttaki dosya close() çağrısında kapatılır.

class logging.Formatter(fmt: str | None = None, datefmt: str | None = None)

LogRecord örneklerini dizelere işler.

fmt printf tarzı bir şablondur. Tanınan anahtarlar %(name)s, %(message)s, %(msecs)d, %(asctime)s ve %(levelname)s değerleridir. Ayarlanmadığında varsayılan olarak "%(levelname)s:%(name)s:%(message)s" değerini alır.

datefmt, %(asctime)s değerini işlemek için kullanılan time.strftime şablonudur. Varsayılan olarak "%Y-%m-%d %H:%M:%S" değerini alır.

usesTime() bool

Biçim şablonu asctime değerine başvuruyorsa True döndürür.

formatTime(datefmt: str, record: LogRecord) str | None

record.ct değerini time.strftime ve datefmt kullanarak biçimlendirir. time.strftime mevcut olmayan platformlarda None döndürür.

format(record: LogRecord) str

record nesnesini işler. Şablon asctime kullanıyorsa, record.asctime değerini doldurmak için önce formatTime() çağrılır.

class logging.LogRecord

Bir Logger nesnesinden işleyicilerine aktarılan veriler için kapsayıcı. Örnekler set() aracılığıyla doldurulur; günlükleyici uygulamaları, ayırmaları azaltmak için günlükleyici başına tek bir kaydı yeniden kullanır.

name: str

Kaynak günlükleyicinin adı.

levelno: int

Bu kaydın sayısal seviyesi.

levelname: str

Metinsel seviye adı.

message: str

Tam olarak biçimlendirilmiş günlük mesajı.

ct: float

time.time() tarafından döndürülen oluşturma zamanı.

msecs: int

ct değerinin milisaniye bileşeni.

asctime: str | None

İnsan tarafından okunabilir zaman damgası; Formatter tarafından tembel olarak doldurulur.

set(name: str, level: int, message: str) None

Kaydı verilen değerlerle başlatır ve geçerli zamanı yakalar.