logging — jurnalizarea evenimentelor#

Acest modul oferă un subset ușor al pachetului standard Python logging, adaptat pentru MicroPython. Acceptă jurnalizarea pe niveluri prin obiecte Logger denumite ierarhic, un set restrâns de handlere (StreamHandler, FileHandler), formatare în stil printf prin Formatter și funcții de conveniență la nivel de modul echivalente cu cele care operează pe loggerul rădăcină.

Modulul urmărește API-ul familiar CPython suficient de îndeaproape încât aplicațiile simple scrise pentru biblioteca standard ar trebui să funcționeze nemodificate. Filtrele, blocarea pe mai multe procese, formatul fișierului de configurare și majoritatea claselor de handlere nu sunt furnizate.

Constante de nivel#

logging.CRITICAL: int#

Valoare numerică 50. Utilizată pentru erori nerecuperabile.

logging.ERROR: int#

Valoare numerică 40. Utilizată pentru probleme grave.

logging.WARNING: int#

Valoare numerică 30. Nivelul implicit pentru un logger rădăcină proaspăt configurat.

logging.INFO: int#

Valoare numerică 20. Utilizată pentru mesaje de confirmare.

logging.DEBUG: int#

Valoare numerică 10. Utilizată pentru ieșire de diagnosticare detaliată.

logging.NOTSET: int#

Valoare numerică 0. Indică un logger fără niciun nivel configurat (nivelul efectiv este atunci moștenit de la loggerul rădăcină sau WARNING).

Funcții#

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

Returnează Logger-ul înregistrat sub name, creându-l la prima utilizare. Dacă name este None, este returnat loggerul rădăcină. Primul apel cu name="root" (sau cu name nesetat) invocă implicit basicConfig pentru a atașa un StreamHandler implicit care scrie în sys.stderr.

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

Jurnalizează un mesaj la nivelul level pe loggerul rădăcină. args sunt interpolate în msg folosind formatarea în stil printf %; un singur argument de tip dicționar este utilizat ca mapare.

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

Echivalent cu getLogger().debug(msg, *args).

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

Echivalent cu getLogger().info(msg, *args).

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

Echivalent cu getLogger().warning(msg, *args).

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

Echivalent cu getLogger().error(msg, *args).

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

Echivalent cu getLogger().critical(msg, *args).

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

Echivalent cu getLogger().exception(msg, *args, exc_info=exc_info). Jurnalizează mesajul la ERROR și, în plus, formatează traceback-ul excepției active atunci când exc_info este adevărat. Dacă exc_info este el însuși o BaseException, se utilizează traceback-ul acelei excepții; altfel se consultă sys.exc_info() atunci când este disponibil.

logging.shutdown() None#

Închide fiecare handler atașat fiecărui logger cunoscut și uită loggerele. Înregistrată automat prin sys.atexit atunci când acest hook este disponibil.

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

Asociază name-ul textual cu level-ul numeric, astfel încât Formatter să îl poată reda prin %(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#

Configurează loggerul rădăcină cu un singur handler.

Dacă filename este furnizat, se creează un FileHandler folosind filemode și encoding; altfel se utilizează un StreamHandler care scrie în stream (implicit sys.stderr).

format și datefmt sunt transmise mai departe către un nou Formatter.

level setează atât nivelul handlerului, cât și nivelul loggerului rădăcină.

Dacă loggerul rădăcină are deja handlere, această funcție nu face nimic, cu excepția cazului în care force este True, caz în care handlerele existente sunt închise și înlocuite.

Clase#

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

Un logger denumit. Construiți loggerele prin getLogger, mai degrabă decât direct, astfel încât getLogger să poată returna aceeași instanță pentru același nume.

name: str#

Numele punctat al loggerului.

level: int#

Nivelul numeric configurat. 0 (NOTSET) înseamnă „moștenește”.

handlers: list#

Lista instanțelor Handler atașate acestui logger. Când este goală, mesajele sunt trimise către handlerele loggerului rădăcină.

setLevel(level: int) None#

Setează nivelul de prag al loggerului.

isEnabledFor(level: int) bool#

Returnează True dacă un mesaj de nivel level ar fi procesat de acest logger.

getEffectiveLevel() int#

Returnează primul nivel diferit de zero dintre: nivelul acestui logger, nivelul loggerului rădăcină sau WARNING.

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

Jurnalizează msg la nivelul level. args sunt interpolate în msg cu operatorul %; dacă primul argument pozițional este un dicționar, acesta este utilizat ca mapare.

debug(msg: str, *args) None#

Jurnalizează msg la DEBUG.

info(msg: str, *args) None#

Jurnalizează msg la INFO.

warning(msg: str, *args) None#

Jurnalizează msg la WARNING.

error(msg: str, *args) None#

Jurnalizează msg la ERROR.

critical(msg: str, *args) None#

Jurnalizează msg la CRITICAL.

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

Jurnalizează msg la ERROR și, când exc_info este adevărat, adaugă traceback-ul formatat. Dacă exc_info este o instanță BaseException, se redă traceback-ul acelei excepții; altfel se consultă excepția activă prin sys.exc_info().

addHandler(handler: Handler) None#

Atașează handler la acest logger.

hasHandlers() bool#

Returnează True dacă există handlere atașate acestui logger.

class logging.Handler(level: int = NOTSET)#

Clasa de bază pentru toate handlerele. Subclasele implementează emit().

level: int#

Nivelul de prag al handlerului.

formatter: 'Formatter | None'#

Formatter-ul activ sau None.

setLevel(level: int) None#

Setează nivelul de prag al handlerului.

setFormatter(formatter: Formatter) None#

Atașează formatter la acest handler.

format(record: LogRecord) str#

Redă record folosind formatatorul configurat.

close() None#

Eliberează resursele deținute de handler. Apelată de shutdown și de FileHandler atunci când acesta este închis.

class logging.StreamHandler(stream=None)#

Handler care scrie înregistrările formatate, urmate de self.terminator ("\n" în mod implicit), în stream. stream are valoarea implicită sys.stderr.

stream#

Obiectul stream de destinație.

terminator: str#

Șir adăugat după fiecare înregistrare formatată. Valoarea implicită este "\n".

emit(record: LogRecord) None#

Scrie record în stream dacă nivelul său atinge pragul handlerului.

close() None#

Golește stream-ul subiacent atunci când acesta expune o metodă flush.

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

Subclasă StreamHandler care deschide filename cu mode și encoding date și scrie în el înregistrările formatate. Fișierul subiacent este închis la close().

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

Redă instanțele LogRecord ca șiruri de caractere.

fmt este un șablon în stil printf. Cheile recunoscute sunt %(name)s, %(message)s, %(msecs)d, %(asctime)s și %(levelname)s. Când nu este setat, valoarea implicită este "%(levelname)s:%(name)s:%(message)s".

datefmt este șablonul time.strftime utilizat pentru a reda %(asctime)s. Valoarea implicită este "%Y-%m-%d %H:%M:%S".

usesTime() bool#

Returnează True dacă șablonul de format face referire la asctime.

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

Formatează record.ct folosind time.strftime și datefmt. Returnează None pe platformele unde time.strftime nu este disponibil.

format(record: LogRecord) str#

Redă record. Dacă șablonul utilizează asctime, formatTime() este invocată mai întâi pentru a popula record.asctime.

class logging.LogRecord#

Container pentru datele transmise de la un Logger către handlerele sale. Instanțele sunt populate prin set(); implementările de logger reutilizează o singură înregistrare per logger pentru a reduce alocările.

name: str#

Numele loggerului de origine.

levelno: int#

Nivelul numeric al acestei înregistrări.

levelname: str#

Numele textual al nivelului.

message: str#

Mesajul de jurnal complet formatat.

ct: float#

Momentul creării, așa cum este returnat de time.time().

msecs: int#

Componenta de milisecunde a ct.

asctime: str | None#

Marcaj temporal lizibil pentru oameni; populat în mod întârziat de Formatter.

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

Inițializează înregistrarea cu valorile date și captează momentul curent.