logging — händelseloggning#

Denna modul tillhandahåller en lättviktig delmängd av standardpaketet logging i Python anpassad för MicroPython. Den stöder nivåbaserad loggning genom hierarkiskt namngivna Logger-objekt, en liten uppsättning hanterare (StreamHandler, FileHandler), printf-liknande formatering via Formatter samt bekvämlighetsfunktioner på modulnivå motsvarande dem som arbetar mot rotloggaren.

Modulen följer det välbekanta CPython-API:et tillräckligt nära för att enkla applikationer skrivna för standardbiblioteket ska fungera oförändrade. Filter, låsning mellan flera processer, formatet för konfigurationsfiler och de flesta hanterarklasser tillhandahålls inte.

Nivåkonstanter#

logging.CRITICAL: int#

Numeriskt värde 50. Används för oåterkalleliga fel.

logging.ERROR: int#

Numeriskt värde 40. Används för allvarliga problem.

logging.WARNING: int#

Numeriskt värde 30. Standardnivå för en nyligen konfigurerad rotloggare.

logging.INFO: int#

Numeriskt värde 20. Används för bekräftelsemeddelanden.

logging.DEBUG: int#

Numeriskt värde 10. Används för finkornig diagnostikutmatning.

logging.NOTSET: int#

Numeriskt värde 0. Anger en loggare utan konfigurerad nivå (den effektiva nivån ärvs då från rotloggaren eller WARNING).

Funktioner#

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

Returnerar den Logger som är registrerad under name och skapar den vid första användningen. Om name är None returneras rotloggaren. Det första anropet med name="root" (eller med name osatt) anropar implicit basicConfig för att koppla på en standard-StreamHandler som skriver till sys.stderr.

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

Loggar ett meddelande på nivån level på rotloggaren. args interpoleras in i msg med printf-liknande %-formatering; ett enskilt dict-argument används som mappning.

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

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

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

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

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

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

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

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

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

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

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

Motsvarar getLogger().exception(msg, *args, exc_info=exc_info). Loggar meddelandet på ERROR och formaterar dessutom den aktiva undantagets stackspårning när exc_info är sann. Om exc_info självt är ett BaseException används det undantagets stackspårning; annars konsulteras sys.exc_info() när det är tillgängligt.

logging.shutdown() None#

Stänger varje hanterare som är kopplad till varje känd loggare och glömmer loggarna. Registreras automatiskt via sys.atexit när den kroken är tillgänglig.

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

Kopplar det textuella name till den numeriska nivån level så att Formatter kan återge det via %(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#

Konfigurerar rotloggaren med en enda hanterare.

Om filename anges skapas en FileHandler med filemode och encoding; annars används en StreamHandler som skriver till stream (med sys.stderr som standard).

format och datefmt skickas vidare till en ny Formatter.

level anger både hanterarens nivå och rotloggarens nivå.

Om rotloggaren redan har hanterare är denna funktion verkningslös såvida inte force är True, i vilket fall de befintliga hanterarna stängs och ersätts.

Klasser#

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

En namngiven loggare. Skapa loggare via getLogger snarare än direkt, så att getLogger kan returnera samma instans för samma namn.

name: str#

Loggarens punktnotationsnamn.

level: int#

Den konfigurerade numeriska nivån. 0 (NOTSET) betyder ”ärv”.

handlers: list#

Listan över Handler-instanser som är kopplade till denna loggare. När den är tom skickas meddelanden till rotloggarens hanterare.

setLevel(level: int) None#

Anger loggarens tröskelnivå.

isEnabledFor(level: int) bool#

Returnerar True om ett meddelande på nivån level skulle behandlas av denna loggare.

getEffectiveLevel() int#

Returnerar den första nollskilda av: denna loggares nivå, rotloggarens nivå eller WARNING.

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

Loggar msg på nivån level. args interpoleras in i msg med %-operatorn; om det första positionsargumentet är en dict används det som en mappning.

debug(msg: str, *args) None#

Loggar msgDEBUG.

info(msg: str, *args) None#

Loggar msgINFO.

warning(msg: str, *args) None#

Loggar msgWARNING.

error(msg: str, *args) None#

Loggar msgERROR.

critical(msg: str, *args) None#

Loggar msgCRITICAL.

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

Loggar msgERROR och, när exc_info är sann, lägger till den formaterade stackspårningen. Om exc_info är en BaseException-instans återges det undantagets stackspårning; annars konsulteras det aktiva undantaget via sys.exc_info().

addHandler(handler: Handler) None#

Kopplar handler till denna loggare.

hasHandlers() bool#

Returnerar True om några hanterare är kopplade till denna loggare.

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

Basklass för alla hanterare. Underklasser implementerar emit().

level: int#

Hanterarens tröskelnivå.

formatter: 'Formatter | None'#

Den aktiva Formatter, eller None.

setLevel(level: int) None#

Anger hanterarens tröskelnivå.

setFormatter(formatter: Formatter) None#

Kopplar formatter till denna hanterare.

format(record: LogRecord) str#

Återger record med den konfigurerade formateraren.

close() None#

Frigör resurser som hålls av hanteraren. Anropas av shutdown och av FileHandler när den stängs.

class logging.StreamHandler(stream=None)#

Hanterare som skriver formaterade poster, följt av self.terminator ("\n" som standard), till stream. stream är som standard sys.stderr.

stream#

Målströmobjektet.

terminator: str#

Sträng som läggs till efter varje formaterad post. Är som standard "\n".

emit(record: LogRecord) None#

Skriver record till stream om dess nivå når upp till hanterarens tröskel.

close() None#

Tömmer den underliggande strömmen när den exponerar en flush-metod.

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

Underklass till StreamHandler som öppnar filename med angivet mode och encoding och skriver formaterade poster till den. Den underliggande filen stängs vid close().

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

Återger LogRecord-instanser till strängar.

fmt är en printf-liknande mall. Igenkända nycklar är %(name)s, %(message)s, %(msecs)d, %(asctime)s och %(levelname)s. När den är osatt är den som standard "%(levelname)s:%(name)s:%(message)s".

datefmt är den time.strftime-mall som används för att återge %(asctime)s. Är som standard "%Y-%m-%d %H:%M:%S".

usesTime() bool#

Returnerar True om formatmallen refererar till asctime.

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

Formaterar record.ct med time.strftime och datefmt. Returnerar None på plattformar där time.strftime inte är tillgängligt.

format(record: LogRecord) str#

Återger record. Om mallen använder asctime anropas formatTime() först för att fylla i record.asctime.

class logging.LogRecord#

Behållare för de data som skickas från en Logger till dess hanterare. Instanser fylls i via set(); loggarimplementationer återanvänder en enda post per loggare för att minska minnesallokeringar.

name: str#

Den ursprungliga loggarens namn.

levelno: int#

Numerisk nivå för denna post.

levelname: str#

Textuellt nivånamn.

message: str#

Det fullständigt formaterade loggmeddelandet.

ct: float#

Skapelsetidpunkt enligt vad time.time() returnerar.

msecs: int#

Millisekundkomponenten av ct.

asctime: str | None#

Människoläsbar tidsstämpel; fylls i lat av Formatter.

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

Initierar posten med de angivna värdena och fångar den aktuella tiden.