logging — bilježenje događaja

Ovaj modul pruža lagani podskup standardnog Python paketa logging prilagođen za MicroPython. Podržava bilježenje po razinama putem hijerarhijski imenovanih objekata Logger, mali skup rukovatelja (StreamHandler, FileHandler), oblikovanje u stilu printf putem Formatter te pomoćne funkcije na razini modula koje su istovjetne onima koje rade nad korijenskim loggerom.

Modul dovoljno blisko prati poznati CPython API tako da bi jednostavne aplikacije napisane za standardnu biblioteku trebale raditi bez izmjena. Filtri, zaključavanje za više procesa, format konfiguracijske datoteke i većina klasa rukovatelja nisu dostupni.

Konstante razina

logging.CRITICAL: int

Numerička vrijednost 50. Koristi se za nepopravljive pogreške.

logging.ERROR: int

Numerička vrijednost 40. Koristi se za ozbiljne probleme.

logging.WARNING: int

Numerička vrijednost 30. Zadana razina za netom konfigurirani korijenski logger.

logging.INFO: int

Numerička vrijednost 20. Koristi se za poruke potvrde.

logging.DEBUG: int

Numerička vrijednost 10. Koristi se za detaljan dijagnostički ispis.

logging.NOTSET: int

Numerička vrijednost 0. Označava logger bez konfigurirane razine (učinkovita razina tada se nasljeđuje od korijenskog loggera ili WARNING).

Funkcije

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

Vraća Logger registriran pod name, stvarajući ga pri prvom korištenju. Ako je name None, vraća se korijenski logger. Prvi poziv s name="root" (ili s nepostavljenim name) implicitno poziva basicConfig kako bi priložio zadani StreamHandler koji piše u sys.stderr.

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

Bilježi poruku na razini level na korijenskom loggeru. args se umeću u msg pomoću oblikovanja u stilu printf s %; pojedinačni rječnik kao argument koristi se kao preslikavanje.

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

Istovjetno getLogger().debug(msg, *args).

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

Istovjetno getLogger().info(msg, *args).

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

Istovjetno getLogger().warning(msg, *args).

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

Istovjetno getLogger().error(msg, *args).

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

Istovjetno getLogger().critical(msg, *args).

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

Istovjetno getLogger().exception(msg, *args, exc_info=exc_info). Bilježi poruku na razini ERROR i dodatno oblikuje trag (traceback) aktivne iznimke kada je exc_info istinit. Ako je exc_info sam po sebi BaseException, koristi se trag te iznimke; u suprotnom se konzultira sys.exc_info() kada je dostupan.

logging.shutdown() None

Zatvara svaki rukovatelj priložen svakom poznatom loggeru i zaboravlja loggere. Registrira se automatski putem sys.atexit kada je ta kuka dostupna.

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

Pridružuje tekstualni name numeričkoj razini level tako da ga Formatter može prikazati putem %(levelname)s.

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

Konfigurira korijenski logger s jednim rukovateljem.

Ako je naveden filename, stvara se FileHandler koristeći filemode i encoding; u suprotnom se koristi StreamHandler koji piše u stream (zadano sys.stderr).

format i datefmt prosljeđuju se novom Formatter.

level postavlja i razinu rukovatelja i razinu korijenskog loggera.

Ako korijenski logger već ima rukovatelje, ova funkcija nema učinka osim ako je force True, u kojem se slučaju postojeći rukovatelji zatvaraju i zamjenjuju.

Klase

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

Imenovani logger. Loggere konstruirajte putem getLogger, a ne izravno, tako da getLogger može vratiti istu instancu za isto ime.

name: str

Točkasto ime loggera.

level: int

Konfigurirana numerička razina. 0 (NOTSET) znači „naslijedi”.

handlers: list

Popis instanci Handler priloženih ovom loggeru. Kada je prazan, poruke se prosljeđuju rukovateljima korijenskog loggera.

setLevel(level: int) None

Postavlja pragovnu razinu loggera.

isEnabledFor(level: int) bool

Vraća True ako bi poruku razine level obradio ovaj logger.

getEffectiveLevel() int

Vraća prvu vrijednost koja nije nula od: razine ovog loggera, razine korijenskog loggera ili WARNING.

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

Bilježi msg na razini level. args se umeću u msg pomoću operatora %; ako je prvi pozicijski argument rječnik, koristi se kao preslikavanje.

debug(msg: str, *args) None

Bilježi msg na razini DEBUG.

info(msg: str, *args) None

Bilježi msg na razini INFO.

warning(msg: str, *args) None

Bilježi msg na razini WARNING.

error(msg: str, *args) None

Bilježi msg na razini ERROR.

critical(msg: str, *args) None

Bilježi msg na razini CRITICAL.

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

Bilježi msg na razini ERROR i, kada je exc_info istinit, dodaje oblikovani trag (traceback). Ako je exc_info instanca BaseException, prikazuje se trag te iznimke; u suprotnom se aktivna iznimka konzultira putem sys.exc_info().

addHandler(handler: Handler) None

Prilaže handler ovom loggeru.

hasHandlers() bool

Vraća True ako su ovom loggeru priloženi bilo kakvi rukovatelji.

class logging.Handler(level: int = NOTSET)

Bazna klasa za sve rukovatelje. Podklase implementiraju emit().

level: int

Pragovna razina rukovatelja.

formatter: 'Formatter | None'

Aktivni Formatter, ili None.

setLevel(level: int) None

Postavlja pragovnu razinu rukovatelja.

setFormatter(formatter: Formatter) None

Prilaže formatter ovom rukovatelju.

format(record: LogRecord) str

Prikazuje record pomoću konfiguriranog formatera.

close() None

Oslobađa resurse koje drži rukovatelj. Poziva ga shutdown te FileHandler kada se zatvara.

class logging.StreamHandler(stream=None)

Rukovatelj koji piše oblikovane zapise, popraćene s self.terminator (zadano "\n"), u stream. stream zadano je sys.stderr.

stream

Odredišni stream objekt.

terminator: str

Niz znakova koji se dodaje nakon svakog oblikovanog zapisa. Zadano "\n".

emit(record: LogRecord) None

Piše record u stream ako njegova razina dosegne prag rukovatelja.

close() None

Prazni temeljni stream kada izlaže metodu flush.

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

Podklasa StreamHandler koja otvara filename sa zadanim mode i encoding te u nju piše oblikovane zapise. Temeljna datoteka zatvara se pri close().

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

Prikazuje instance LogRecord kao nizove znakova.

fmt je predložak u stilu printf. Prepoznati ključevi su %(name)s, %(message)s, %(msecs)d, %(asctime)s i %(levelname)s. Kada nije postavljen, zadano je "%(levelname)s:%(name)s:%(message)s".

datefmt je predložak za time.strftime koji se koristi za prikaz %(asctime)s. Zadano "%Y-%m-%d %H:%M:%S".

usesTime() bool

Vraća True ako predložak oblikovanja referencira asctime.

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

Oblikuje record.ct pomoću time.strftime i datefmt. Vraća None na platformama gdje time.strftime nije dostupan.

format(record: LogRecord) str

Prikazuje record. Ako predložak koristi asctime, prvo se poziva formatTime() kako bi se popunio record.asctime.

class logging.LogRecord

Spremnik za podatke proslijeđene od Logger njegovim rukovateljima. Instance se popunjavaju putem set(); implementacije loggera ponovno koriste jedan zapis po loggeru kako bi se smanjile alokacije.

name: str

Ime izvornog loggera.

levelno: int

Numerička razina ovog zapisa.

levelname: str

Tekstualni naziv razine.

message: str

Potpuno oblikovana poruka zapisa.

ct: float

Vrijeme stvaranja kako ga vraća time.time().

msecs: int

Milisekundna komponenta od ct.

asctime: str | None

Čovjeku čitljiva vremenska oznaka; popunjava je odgođeno Formatter.

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

Inicijalizira zapis sa zadanim vrijednostima i bilježi trenutno vrijeme.